<?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>207207</bug_id>
          
          <creation_ts>2020-02-04 09:46:11 -0800</creation_ts>
          <short_desc>Make WKWebView._negotiatedLegacyTLS accurate when loading main resouorce from network or cache</short_desc>
          <delta_ts>2020-02-05 16:56:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1614599</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-02-04 09:46:11 -0800</bug_when>
    <thetext>Fix race condition for WKWebView._negotiatedLegacyTLS when loading main resouorce</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614614</commentid>
    <comment_count>1</comment_count>
      <attachid>389676</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-02-04 10:13:24 -0800</bug_when>
    <thetext>Created attachment 389676
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614616</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-02-04 10:21:29 -0800</bug_when>
    <thetext>&lt;rdar://problem/59153742&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614672</commentid>
    <comment_count>3</comment_count>
      <attachid>389688</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-02-04 12:00:53 -0800</bug_when>
    <thetext>Created attachment 389688
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614682</commentid>
    <comment_count>4</comment_count>
      <attachid>389692</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-02-04 12:43:19 -0800</bug_when>
    <thetext>Created attachment 389692
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614706</commentid>
    <comment_count>5</comment_count>
      <attachid>389699</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-02-04 13:50:24 -0800</bug_when>
    <thetext>Created attachment 389699
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614717</commentid>
    <comment_count>6</comment_count>
      <attachid>389704</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-02-04 14:03:06 -0800</bug_when>
    <thetext>Created attachment 389704
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614758</commentid>
    <comment_count>7</comment_count>
      <attachid>389713</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-02-04 14:51:05 -0800</bug_when>
    <thetext>Created attachment 389713
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614781</commentid>
    <comment_count>8</comment_count>
      <attachid>389713</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-04 15:16:41 -0800</bug_when>
    <thetext>Comment on attachment 389713
Patch

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

&gt; Source/WebCore/platform/network/ResourceResponseBase.h:285
&gt; +    uint8_t isRedirectedAndUsedLegacyTLS = (m_isRedirected ? 0x1 : 0x0) | (m_usedLegacyTLS == UsedLegacyTLS::Yes ? 0x2 : 0x0);

Can we please avoid obscure code like this simply to encode a boolean? I&apos;m really not convinced the extra complexity is worth the very slight saving of data sent over IPC.

&gt; Source/WebKit/NetworkProcess/NetworkLoad.cpp:236
&gt; +        response.includeCertificateInfo(negotiatedLegacyTLS == NegotiatedLegacyTLS::Yes ? UsedLegacyTLS::Yes : UsedLegacyTLS::No);

Do we really need both NegotiatedLegacyTLS and UsedLegacyTLS?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614798</commentid>
    <comment_count>9</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-02-04 15:33:59 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #8)
&gt; Comment on attachment 389713 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=389713&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/network/ResourceResponseBase.h:285
&gt; &gt; +    uint8_t isRedirectedAndUsedLegacyTLS = (m_isRedirected ? 0x1 : 0x0) | (m_usedLegacyTLS == UsedLegacyTLS::Yes ? 0x2 : 0x0);
&gt; 
&gt; Can we please avoid obscure code like this simply to encode a boolean? I&apos;m
&gt; really not convinced the extra complexity is worth the very slight saving of
&gt; data sent over IPC.
This isn&apos;t about IPC.  This is about reading from existing disk caches.  I did not think this was enough to increment the disk cache version.
 
&gt; &gt; Source/WebKit/NetworkProcess/NetworkLoad.cpp:236
&gt; &gt; +        response.includeCertificateInfo(negotiatedLegacyTLS == NegotiatedLegacyTLS::Yes ? UsedLegacyTLS::Yes : UsedLegacyTLS::No);
&gt; 
&gt; Do we really need both NegotiatedLegacyTLS and UsedLegacyTLS?
We need something in WebCore, and I&apos;m trying to make this patch as easy to merge as possible.  I&apos;ll clean this up with one type with its own header after landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614815</commentid>
    <comment_count>10</comment_count>
      <attachid>389713</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-04 15:59:11 -0800</bug_when>
    <thetext>Comment on attachment 389713
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/network/ResourceResponseBase.h:285
&gt;&gt;&gt; +    uint8_t isRedirectedAndUsedLegacyTLS = (m_isRedirected ? 0x1 : 0x0) | (m_usedLegacyTLS == UsedLegacyTLS::Yes ? 0x2 : 0x0);
&gt;&gt; 
&gt;&gt; Can we please avoid obscure code like this simply to encode a boolean? I&apos;m really not convinced the extra complexity is worth the very slight saving of data sent over IPC.
&gt; 
&gt; This isn&apos;t about IPC.  This is about reading from existing disk caches.  I did not think this was enough to increment the disk cache version.

Still, I do not like the added complexity. I&apos;d still prefer bumping the cache version. One alternative: Do we really need to save this bit to the disk cache, or is IPC encoding/decoding sufficient?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614826</commentid>
    <comment_count>11</comment_count>
      <attachid>389734</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-02-04 16:18:11 -0800</bug_when>
    <thetext>Created attachment 389734
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614831</commentid>
    <comment_count>12</comment_count>
      <attachid>389734</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-02-04 16:28:00 -0800</bug_when>
    <thetext>Comment on attachment 389734
Patch

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

&gt; Source/WebKit/ChangeLog:18
&gt; +        In order to maintain binary compatibility with existing disk caches, I bundle two booleans together
&gt; +        when encoding.  This results in existing disk caches saying they loaded nothing over legacy TLS,
&gt; +        which is somewhat correct because TLS 1.0 and 1.1 were not deprecated when the resources were fetched.
&gt; +        Going forward, the bit will be set and the disk cache entries will store whether they were loaded
&gt; +        over legacy TLS.

This isn&apos;t true in the newest patch.

Also, this is a separate change that is unrelated to the race condition you&apos;re trying to fix. Can you make two separate patches? The choice for what&apos;s right for the disk cache probably deserves some discussion, and the fix for the race condition need not wait on that discussion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614836</commentid>
    <comment_count>13</comment_count>
      <attachid>389740</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-02-04 16:37:29 -0800</bug_when>
    <thetext>Created attachment 389740
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614838</commentid>
    <comment_count>14</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-02-04 16:39:31 -0800</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #12)
&gt; Comment on attachment 389734 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=389734&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/ChangeLog:18
&gt; &gt; +        In order to maintain binary compatibility with existing disk caches, I bundle two booleans together
&gt; &gt; +        when encoding.  This results in existing disk caches saying they loaded nothing over legacy TLS,
&gt; &gt; +        which is somewhat correct because TLS 1.0 and 1.1 were not deprecated when the resources were fetched.
&gt; &gt; +        Going forward, the bit will be set and the disk cache entries will store whether they were loaded
&gt; &gt; +        over legacy TLS.
&gt; 
&gt; This isn&apos;t true in the newest patch.
You&apos;re right.  I updated the changelog to reflect the changes that were made in the updated patch.
&gt; 
&gt; Also, this is a separate change that is unrelated to the race condition
&gt; you&apos;re trying to fix. Can you make two separate patches? The choice for
&gt; what&apos;s right for the disk cache probably deserves some discussion, and the
&gt; fix for the race condition need not wait on that discussion.

The title was indeed misleading, so I changed it.  This patch fixes the actual problem which was that users observe _negotiatedLegacyTLS to be incorrectly false because of a race condition and because of the disk cache.  Luckily the same code fixes both: the ResourceResponseBase serialization code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614846</commentid>
    <comment_count>15</comment_count>
      <attachid>389744</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-02-04 16:46:04 -0800</bug_when>
    <thetext>Created attachment 389744
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614860</commentid>
    <comment_count>16</comment_count>
      <attachid>389748</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-02-04 17:07:05 -0800</bug_when>
    <thetext>Created attachment 389748
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614866</commentid>
    <comment_count>17</comment_count>
      <attachid>389750</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-02-04 17:21:27 -0800</bug_when>
    <thetext>Created attachment 389750
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614886</commentid>
    <comment_count>18</comment_count>
      <attachid>389756</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-02-04 18:00:32 -0800</bug_when>
    <thetext>Created attachment 389756
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615118</commentid>
    <comment_count>19</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-02-05 10:23:50 -0800</bug_when>
    <thetext>You’ve made an important discover: We didn’t previously consider the http cache.

Given that discovery, I’d like you to facilitate a discussion about how the http cache should interact with the legacy TLS warning.

Some questions I have for that discussion:

1. If an existing cache entry was loaded over unknown or legacy TLS, and then the user updates WebKit, should WebKit evict that cache entry, load it and show it as insecure, load it and show it as secure, or select a behavior based on whether a new connection to the server yields modern TLS?

2. If an existing cache entry was loaded over unknown or legacy TLS, and then the server updates to modern TLS…. { Same questions as 1 }?

3. Is it accurate to say that a connection to a server is insecure when, in fact, no connection to the server has been made (and the connection, if made, might be secure)?

4. What do other browsers do?

5. Is it acceptable to pay the cost of evicting all caches worldwide in order to get the behavior we want here?

6. Should we put a cap on the lifetime of legacy TLS resources in the cache, to avoid the case where a long-lived resource never gets upgraded to modern TLS?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615132</commentid>
    <comment_count>20</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-02-05 11:07:23 -0800</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #19)
&gt; You’ve made an important discover: We didn’t previously consider the http
&gt; cache.
&gt; 
&gt; Given that discovery, I’d like you to facilitate a discussion about how the
&gt; http cache should interact with the legacy TLS warning.
&gt; 
&gt; Some questions I have for that discussion:
&gt; 
&gt; 1. If an existing cache entry was loaded over unknown or legacy TLS, and
&gt; then the user updates WebKit, should WebKit evict that cache entry, load it
&gt; and show it as insecure, load it and show it as secure, or select a behavior
&gt; based on whether a new connection to the server yields modern TLS?
This will remove all existing cache entries, so this question is invalid.

&gt; 2. If an existing cache entry was loaded over unknown or legacy TLS, and
&gt; then the server updates to modern TLS…. { Same questions as 1 }?
The only mechanism for this is the existing mechanism for if they change the content on their server, at which point the cache will be updated.  Other than that, we can&apos;t know what the server does if we don&apos;t connect to the server.

&gt; 3. Is it accurate to say that a connection to a server is insecure when, in
&gt; fact, no connection to the server has been made (and the connection, if
&gt; made, might be secure)?
We want our users to consistently see that a web page has negotiated legacy TLS, whether it is loaded from the server or from the cache.  We already have people wondering why it is sometimes true and sometimes false for the same site, and that is the problem to be fixed by this patch.

&gt; 4. What do other browsers do?
There is no precedent, and this is intentionally different than their stated plans.

&gt; 5. Is it acceptable to pay the cost of evicting all caches worldwide in
&gt; order to get the behavior we want here?
I thought it was not, but responding to Chris&apos;s review feedback I did it.

&gt; 6. Should we put a cap on the lifetime of legacy TLS resources in the cache,
&gt; to avoid the case where a long-lived resource never gets upgraded to modern
&gt; TLS?
No.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615147</commentid>
    <comment_count>21</comment_count>
      <attachid>389833</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-02-05 11:23:49 -0800</bug_when>
    <thetext>Created attachment 389833
patch without affecting cache</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615157</commentid>
    <comment_count>22</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-02-05 11:37:35 -0800</bug_when>
    <thetext>I feel an urgency to land this. If you feel it would be better to not affect the cache and respond to users&apos; visible inconsistency on the same page later, feel free to review that patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615161</commentid>
    <comment_count>23</comment_count>
      <attachid>389756</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-05 11:42:30 -0800</bug_when>
    <thetext>Comment on attachment 389756
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615196</commentid>
    <comment_count>24</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-02-05 12:41:00 -0800</bug_when>
    <thetext>I&apos;m OK with landing this patch.

It seems like we do need to blow away existing cache entries. Otherwise, the behavior of our insecure warning will be inconsistent and confusing, with some users getting the warning and some not, depending on pre-existing cache state. Also wouldn&apos;t be great to load an insecure resource from the cache and call it secure.

I do think we should consider limiting the lifetime of legacy TLS resources in the disk cache, or not storing them at all. A long-lived legacy TLS resource in the disk cache makes it much harder for a website to upgrade to modern TLS, since it will need not only to start supporting modern TLS but also to rename a lot resources to prevent pulling old resources from the cache. And it feels like an own goal to keep loading an insecure resource when a secure resource is available.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615219</commentid>
    <comment_count>25</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-02-05 13:08:07 -0800</bug_when>
    <thetext>https://trac.webkit.org/changeset/255846/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615306</commentid>
    <comment_count>26</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-05 14:57:09 -0800</bug_when>
    <thetext>Follow-up build fix: &lt;https://trac.webkit.org/changeset/255863&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615407</commentid>
    <comment_count>27</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-05 16:56:43 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #26)
&gt; Follow-up build fix: &lt;https://trac.webkit.org/changeset/255863&gt;

And another build fix: &lt;https://trac.webkit.org/changeset/255880&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389676</attachid>
            <date>2020-02-04 10:13:24 -0800</date>
            <delta_ts>2020-02-04 12:00:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207207-20200204101323.patch</filename>
            <type>text/plain</type>
            <size>54851</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDIwLTAyLTA0ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRml4IHJhY2Ug
Y29uZGl0aW9uIGZvciBXS1dlYlZpZXcuX25lZ290aWF0ZWRMZWdhY3lUTFMgd2hlbiBsb2FkaW5n
IG1haW4gcmVzb3VvcmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDcyMDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmluY2x1ZGVDZXJ0aWZpY2F0ZUlu
Zm8gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJh
c2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjp1c2VkTGVnYWN5
VExTIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmRlY29k
ZSk6CisKIDIwMjAtMDItMDMgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIERvIG5vdCBjb3B5IGZlYXR1cmUgcG9saWN5IGluIGlzRmVhdHVyZVBvbGljeUFsbG93
ZWRCeURvY3VtZW50QW5kQWxsT3duZXJzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAkocmV2aXNpb24g
MjU1NTgwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3Bv
bnNlQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MSwxMSArMjYxLDEyIEBAIHZvaWQgUmVz
b3VyY2VSZXNwb25zZUJhc2U6OnNldFR5cGUoVHlwZSAKICAgICBtX3R5cGUgPSB0eXBlOwogfQog
Ci12b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjppbmNsdWRlQ2VydGlmaWNhdGVJbmZvKCkgY29u
c3QKK3ZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8oVXNl
ZExlZ2FjeVRMUyB1c2VkTGVnYWN5VExTKSBjb25zdAogewogICAgIGlmIChtX2NlcnRpZmljYXRl
SW5mbykKICAgICAgICAgcmV0dXJuOwogICAgIG1fY2VydGlmaWNhdGVJbmZvID0gc3RhdGljX2Nh
c3Q8Y29uc3QgUmVzb3VyY2VSZXNwb25zZSo+KHRoaXMpLT5wbGF0Zm9ybUNlcnRpZmljYXRlSW5m
bygpOworICAgIG1fdXNlZExlZ2FjeVRMUyA9IHVzZWRMZWdhY3lUTFM7CiB9CiAKIFN0cmluZyBS
ZXNvdXJjZVJlc3BvbnNlQmFzZTo6c3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25z
ZUJhc2UuaAkocmV2aXNpb24gMjU1NTgwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw4
IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiAKIGJvb2wgaXNTY3JpcHRBbGxvd2VkQnlOb3Nu
aWZmKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIAorZW51bSBjbGFzcyBVc2VkTGVnYWN5VExT
IDogYm9vbCB7IE5vLCBZZXMgfTsKKwogLy8gRG8gbm90IHVzZSB0aGlzIGNsYXNzIGRpcmVjdGx5
LCB1c2UgdGhlIGNsYXNzIFJlc291cmNlUmVzcG9uc2UgaW5zdGVhZAogY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZUJhc2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMTI3LDggKzEy
OSw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5h
bWUoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIHNhbml0aXplU3Vn
Z2VzdGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8oKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8oVXNlZExlZ2FjeVRMUyA9IFVzZWRMZWdhY3lUTFM6Ok5v
KSBjb25zdDsKICAgICBjb25zdCBPcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+JiBjZXJ0aWZpY2F0
ZUluZm8oKSBjb25zdCB7IHJldHVybiBtX2NlcnRpZmljYXRlSW5mbzsgfTsKKyAgICBib29sIHVz
ZWRMZWdhY3lUTFMoKSBjb25zdCB7IHJldHVybiBtX3VzZWRMZWdhY3lUTFMgPT0gVXNlZExlZ2Fj
eVRMUzo6WWVzOyB9CiAgICAgCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIHJldHVybiBwYXJzZWQg
dmFsdWVzIG9mIHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlIGhlYWRlcnMuCiAgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBjYWNoZUNvbnRyb2xDb250YWluc05vQ2FjaGUoKSBjb25zdDsKQEAgLTI0
Niw3ICsyNDksOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1JhbmdlUmVxdWVzdGVkIHsgZmFs
c2UgfTsKIAogcHJvdGVjdGVkOgotICAgIGludCBtX2h0dHBTdGF0dXNDb2RlIHsgMCB9OworICAg
IHNob3J0IG1faHR0cFN0YXR1c0NvZGUgeyAwIH07CisgICAgbXV0YWJsZSBVc2VkTGVnYWN5VExT
IG1fdXNlZExlZ2FjeVRMUyB7IFVzZWRMZWdhY3lUTFM6Ok5vIH07CiB9OwogCiBpbmxpbmUgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGEsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIGIpIHsgcmV0dXJuIFJlc291cmNlUmVzcG9uc2VCYXNlOjpjb21wYXJlKGEsIGIpOyB9
CkBAIC0yNzMsMTIgKzI3NywxMyBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjplbmNvZGUo
RW5jb2RlCiAgICAgaWYgKEVuY29kZXI6OmlzSVBDRW5jb2RlcikKICAgICAgICAgZW5jb2RlciA8
PCBtX25ldHdvcmtMb2FkTWV0cmljczsKIAotICAgIGVuY29kZXIgPDwgbV9odHRwU3RhdHVzQ29k
ZTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGludD4obV9odHRwU3RhdHVzQ29kZSk7CiAg
ICAgZW5jb2RlciA8PCBtX2NlcnRpZmljYXRlSW5mbzsKICAgICBlbmNvZGVyLmVuY29kZUVudW0o
bV9zb3VyY2UpOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShtX3R5cGUpOwogICAgIGVuY29kZXIu
ZW5jb2RlRW51bShtX3RhaW50aW5nKTsKLSAgICBlbmNvZGVyIDw8IG1faXNSZWRpcmVjdGVkOwor
ICAgIHVpbnQ4X3QgaXNSZWRpcmVjdGVkQW5kVXNlZExlZ2FjeVRMUyA9IChtX2lzUmVkaXJlY3Rl
ZCA/IDB4MSA6IDB4MCkgfCAobV91c2VkTGVnYWN5VExTID09IFVzZWRMZWdhY3lUTFM6OlllcyA/
IDB4MiA6IDB4MCk7CisgICAgZW5jb2RlciA8PCBpc1JlZGlyZWN0ZWRBbmRVc2VkTGVnYWN5VExT
OwogICAgIGVuY29kZXIgPDwgbV9pc1JhbmdlUmVxdWVzdGVkOwogfQogCkBAIC0zMTMsOCArMzE4
LDEwIEBAIGJvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmRlY29kZShEZWNvZGUKICAgICAvLyBU
aGUgbmV0d29ya0xvYWRNZXRyaWNzIGluZm8gaXMgb25seSBzZW5kIG92ZXIgSVBDIGFuZCBub3Qg
c3RvcmVkIGluIGRpc2sgY2FjaGUuCiAgICAgaWYgKERlY29kZXI6OmlzSVBDRGVjb2RlciAmJiAh
ZGVjb2Rlci5kZWNvZGUocmVzcG9uc2UubV9uZXR3b3JrTG9hZE1ldHJpY3MpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNwb25zZS5tX2h0dHBTdGF0
dXNDb2RlKSkKKyAgICBpbnQgaHR0cFN0YXR1c0NvZGU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShodHRwU3RhdHVzQ29kZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXNwb25zZS5t
X2h0dHBTdGF0dXNDb2RlID0gaHR0cFN0YXR1c0NvZGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXNwb25zZS5tX2NlcnRpZmljYXRlSW5mbykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShyZXNwb25zZS5tX3NvdXJjZSkpCkBAIC0zMjMsMTAg
KzMzMCwxMSBAQCBib29sIFJlc291cmNlUmVzcG9uc2VCYXNlOjpkZWNvZGUoRGVjb2RlCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShyZXNwb25zZS5t
X3RhaW50aW5nKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGJvb2wgaXNSZWRpcmVjdGVk
ID0gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShpc1JlZGlyZWN0ZWQpKQorICAgIHVp
bnQ4X3QgaXNSZWRpcmVjdGVkQW5kVXNlZExlZ2FjeVRMUyA9IDA7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShpc1JlZGlyZWN0ZWRBbmRVc2VkTGVnYWN5VExTKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIHJlc3BvbnNlLm1faXNSZWRpcmVjdGVkID0gaXNSZWRpcmVjdGVkOworICAgIHJl
c3BvbnNlLm1faXNSZWRpcmVjdGVkID0gaXNSZWRpcmVjdGVkQW5kVXNlZExlZ2FjeVRMUyAmIDB4
MTsKKyAgICByZXNwb25zZS5tX3VzZWRMZWdhY3lUTFMgPSAoaXNSZWRpcmVjdGVkQW5kVXNlZExl
Z2FjeVRMUyAmIDB4MikgPyBVc2VkTGVnYWN5VExTOjpZZXMgOiBVc2VkTGVnYWN5VExTOjpObzsK
IAogICAgIGJvb2wgaXNSYW5nZVJlcXVlc3RlZCA9IGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoaXNSYW5nZVJlcXVlc3RlZCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjU1NTgwKQor
KysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw3MCBA
QAorMjAyMC0wMi0wNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIEZpeCByYWNlIGNvbmRpdGlvbiBmb3IgV0tXZWJWaWV3Ll9uZWdvdGlhdGVk
TGVnYWN5VExTIHdoZW4gbG9hZGluZyBtYWluIHJlc291b3JjZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3MjA3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gUGFnZUxvYWRTdGF0ZTo6ZGlkQ29tbWl0
TG9hZCwgSSB3YXMgcmVzZXR0aW5nIHRoZSB2YWx1ZSBvZiBfbmVnb3RpYXRlZExlZ2FjeVRMUyB0
byBmYWxzZS4KKyAgICAgICAgVGhhdCBjcmVhdGVkIGEgcmFjZSBjb25kaXRpb24gd2hlbiBsb2Fk
aW5nIHRoZSBtYWluIHJlc291cmNlIGJlY2F1c2UgdGhlIE5ldHdvcmtQcm9jZXNzIHdvdWxkCisg
ICAgICAgIG1lc3NhZ2UgdGhlIFVJUHJvY2VzcyBzZXR0aW5nIF9uZWdvdGlhdGVkTGVnYWN5VExT
IHRvIGZhbHNlLCB3aGlsZSB0aGUgTmV0d29ya1Byb2Nlc3Mgd291bGQKKyAgICAgICAgbWVzc2Fn
ZSB0aGUgV2ViUHJvY2VzcyB3aGljaCB3b3VsZCBtZXNzYWdlIHRoZSBVSVByb2Nlc3MgdG8gY2Fs
bCBQYWdlTG9hZFN0YXRlOjpkaWRDb21taXRMb2FkCisgICAgICAgIHdoaWNoIHdvdWxkIHJlc2V0
IGl0IHRvIGZhbHNlLiAgTm93IGl0IHJlc2V0cyBpdCB0byB0aGUgY29ycmVjdCB2YWx1ZSwgd2hh
dGV2ZXIgaXQgaXMuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gbWFpbnRhaW4gYmluYXJ5IGNvbXBh
dGliaWxpdHkgd2l0aCBleGlzdGluZyBkaXNrIGNhY2hlcywgSSBidW5kbGUgdHdvIGJvb2xlYW5z
IHRvZ2V0aGVyCisgICAgICAgIHdoZW4gZW5jb2RpbmcuICBUaGlzIHJlc3VsdHMgaW4gZXhpc3Rp
bmcgZGlzayBjYWNoZXMgc2F5aW5nIHRoZXkgbG9hZGVkIG5vdGhpbmcgb3ZlciBsZWdhY3kgVExT
LAorICAgICAgICB3aGljaCBpcyBzb21ld2hhdCBjb3JyZWN0IGJlY2F1c2UgVExTIDEuMCBhbmQg
MS4xIHdlcmUgbm90IGRlcHJlY2F0ZWQgd2hlbiB0aGUgcmVzb3VyY2VzIHdlcmUgZmV0Y2hlZC4K
KyAgICAgICAgR29pbmcgZm9yd2FyZCwgdGhlIGJpdCB3aWxsIGJlIHNldCBhbmQgdGhlIGRpc2sg
Y2FjaGUgZW50cmllcyB3aWxsIHN0b3JlIHdoZXRoZXIgdGhleSB3ZXJlIGxvYWRlZAorICAgICAg
ICBvdmVyIGxlZ2FjeSBUTFMuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gbm90IGluY3JlYXNlIHRo
ZSBtZW1vcnkgZm9vdHByaW50IG9mIFJlc291cmNlUmVzcG9uc2UsIEkgY2hhbmdlZCBtX2h0dHBT
dGF0dXNDb2RlIGZyb20KKyAgICAgICAgYW4gaW50IHRvIGEgc2hvcnQuICBJdCBqdXN0IG5lZWRz
IHRvIGJlIGFibGUgdG8gY292ZXIgdGhlIHZhbHVlcyAwLTYwMCBvciBzbywgd2hpY2ggcmVhbGx5
IG9ubHkgbmVlZHMgMTAgYml0cy4KKworICAgICAgICBDb3ZlcmVkIGJ5IG5ldyBBUEkgdGVzdHMu
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJl
Y2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVm
bGlnaHRDaGVja2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNr
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6Om5lZ290aWF0ZWRMZWdhY3lU
TFMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFzay5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDbGllbnQ6Om5lZ290aWF0
ZWRMZWdhY3lUTFMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtEYXRhVGFza0Jsb2IuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tC
bG9iOjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6Om5vdGlmeURpZFJl
Y2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjp0aHJvdHRsZURl
bGF5Q29tcGxldGVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6Om5lZ290aWF0ZWRM
ZWdhY3lUTFMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQaW5nTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9QaW5nTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtE
YXRhVGFza0NvY29hLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjpk
aWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBV
UkxTZXNzaW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVSZXNwb25zZTpjb21wbGV0aW9uSGFuZGxlcjpd
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDdXJsOjppbnZva2VEaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNr
U291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmRpc3BhdGNo
RGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VMb2FkU3RhdGU6OmRpZENvbW1pdExvYWQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1By
b3Zpc2lvbmFsUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdl
UHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1Byb3Zp
c2lvbmFsUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKToKKwogMjAyMC0wMi0wMyAgU2Ft
IFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgU3RhcnQgc3BsaXR0aW5nIHBs
YXRmb3JtIHNwZWNpZmljIG92ZXJyaWRlcyBvZiBkZWZhdWx0IGVuYWJsZSBiZWhhdmlvciBpbnRv
IHRoZWlyIG93biBmaWxlcwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAkocmV2aXNpb24g
MjU1NTgwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZs
aWdodENoZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBO
ZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJlYwogICAgIG1fbmV0d29ya1Byb2Nlc3Mt
PmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShtX3BhcmFtZXRlcnMuc2Vzc2lvbklELCBtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIG1f
cGFyYW1ldGVycy50b3BPcmlnaW4gPyAmbV9wYXJhbWV0ZXJzLnRvcE9yaWdpbi0+ZGF0YSgpIDog
bnVsbHB0ciwgY2hhbGxlbmdlLCBuZWdvdGlhdGVkTGVnYWN5VExTLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNw
b25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtD
T1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiByZXNwb25zZSwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0
aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZSIpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgJ
KHJldmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0NPUlNQcmVmbGlnaHRDaGVja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJl
ZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hh
bGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdh
Y3lUTFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21w
bGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVy
cm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFs
Qnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwpJbmRl
eDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNw
cAkocmV2aXNpb24gMjU1NTgwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrRGF0YVRhc2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgTmV0
d29ya0RhdGFUYXNrOjpzY2hlZHVsZUZhaWx1cmUoRmEKICAgICBtX2ZhaWx1cmVUaW1lci5zdGFy
dE9uZVNob3QoMF9zKTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVSZXNw
b25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZl
UmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVkTGVnYWN5VExT
IG5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBpZiAocmVzcG9uc2UuaXNIVFRQMDkoKSkgewogICAgICAgICBh
dXRvIHVybCA9IHJlc3BvbnNlLnVybCgpOwpAQCAtMTExLDE3ICsxMTEsMTEgQEAgdm9pZCBOZXR3
b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZQogICAgICAgICB9CiAgICAgfQogICAgIGlm
IChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3Zl
KHJlc3BvbnNlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBtX2NsaWVu
dC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBuZWdvdGlhdGVkTGVnYWN5
VExTLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgZWxzZQogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Rh
dGFUYXNrOjpuZWdvdGlhdGVkTGVnYWN5VExTKCkgY29uc3QKLXsKLSAgICBpZiAobV9jbGllbnQp
Ci0gICAgICAgIG1fY2xpZW50LT5uZWdvdGlhdGVkTGVnYWN5VExTKCk7Ci19Ci0KIGJvb2wgTmV0
d29ya0RhdGFUYXNrOjpzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSBjb25z
dAogewogICAgIHJldHVybiBtX2NsaWVudCA/IG1fY2xpZW50LT5zaG91bGRDYXB0dXJlRXh0cmFO
ZXR3b3JrTG9hZE1ldHJpY3MoKSA6IGZhbHNlOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCShyZXZpc2lvbiAyNTU1ODApCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCSh3b3JraW5nIGNvcHkp
CkBAIC02Miw3ICs2Miw3IEBAIGNsYXNzIE5ldHdvcmtEYXRhVGFza0NsaWVudCB7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29t
cGxldGlvbkhhbmRsZXImJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2hhbGxl
bmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lU
TFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VD
b21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJl
c3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBj
b25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVz
RXhwZWN0ZWRUb1NlbmQpID0gMDsKQEAgLTcwLDcgKzcwLDYgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBjYW5ub3RTaG93VVJMKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3YXNCbG9ja2Vk
QnlSZXN0cmljdGlvbnMoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbmVnb3RpYXRlZExlZ2Fj
eVRMUygpIGNvbnN0IHsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3
b3JrTG9hZE1ldHJpY3MoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdm9pZCBkaWRD
b21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKQEAg
LTkyLDggKzkxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXN1bWUoKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVBbmRDYW5jZWwoKSA9IDA7CiAKLSAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXImJik7Ci0gICAgdm9pZCBuZWdvdGlhdGVkTGVnYWN5VExTKCkgY29uc3Q7
CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpOwogICAg
IGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkgY29uc3Q7CiAKICAg
ICBlbnVtIGNsYXNzIFN0YXRlIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAkocmV2aXNpb24gMjU1NTgwKQorKysg
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjkwLDcgKzI5MCw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6
ZGlzcGF0Y2hEaWRSZWMKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgZGlkUmVjZWl2ZVJl
c3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUo
cHJvdGVjdGVkVGhpcyksIGVycm9yQ29kZV0oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgewor
ICAgIGRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgTmVnb3RpYXRlZExlZ2Fj
eVRMUzo6Tm8sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwg
ZXJyb3JDb2RlXShQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKSB7CiAgICAgICAgIExPRyhOZXR3
b3JrU2Vzc2lvbiwgIiVwIC0gTmV0d29ya0RhdGFUYXNrQmxvYjo6ZGlkUmVjZWl2ZVJlc3BvbnNl
IGNvbXBsZXRpb25IYW5kbGVyICgldSkiLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocG9s
aWN5QWN0aW9uKSk7CiAKICAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNhbmNlbGluZyB8
fCBtX3N0YXRlID09IFN0YXRlOjpDb21wbGV0ZWQpIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCShyZXZpc2lvbiAyNTU1ODApCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjA2LDEyICsyMDYsNyBAQCB2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdl
KEF1CiAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShtX3Rhc2stPnNlc3Npb25JRCgpLCBtX3Bh
cmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIG1fcGFyYW1ldGVycy50b3BPcmlnaW4gPyAmbV9wYXJh
bWV0ZXJzLnRvcE9yaWdpbi0+ZGF0YSgpIDogbnVsbHB0ciwgY2hhbGxlbmdlLCBuZWdvdGlhdGVk
TGVnYWN5VExTLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29y
a0xvYWQ6Om5lZ290aWF0ZWRMZWdhY3lUTFMoKSBjb25zdAotewotICAgIG1fbmV0d29ya1Byb2Nl
c3MtPmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLm5lZ290aWF0ZWRMZWdhY3lUTFMobV9wYXJhbWV0
ZXJzLndlYlBhZ2VQcm94eUlEKTsKLX0KLQotdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFu
ZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgTmVnb3RpYXRlZExlZ2FjeVRMUyBu
ZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBBU1NFUlQo
IW1fdGhyb3R0bGUpOwpAQCAtMjI2LDE2ICsyMjEsMTkgQEAgdm9pZCBOZXR3b3JrTG9hZDo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKFJlcwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbm90aWZ5
RGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CisgICAgaWYgKG5lZ290aWF0ZWRMZWdhY3lUTFMgPT0gTmVnb3RpYXRlZExlZ2Fj
eVRMUzo6WWVzKQorICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5hdXRoZW50aWNhdGlvbk1hbmFn
ZXIoKS5uZWdvdGlhdGVkTGVnYWN5VExTKG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCk7Cisg
ICAgCisgICAgbm90aWZ5RGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBuZWdv
dGlhdGVkTGVnYWN5VExTLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQg
TmV0d29ya0xvYWQ6Om5vdGlmeURpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYg
cmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgTmV0d29ya0xvYWQ6Om5vdGlmeURpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0ZWRMZWdhY3lUTFMgbmVnb3RpYXRlZExlZ2FjeVRMUywg
UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICByZXNwb25zZS5zZXRTb3VyY2UoUmVzb3Vy
Y2VSZXNwb25zZTo6U291cmNlOjpOZXR3b3JrKTsKICAgICBpZiAobV9wYXJhbWV0ZXJzLm5lZWRz
Q2VydGlmaWNhdGVJbmZvKQotICAgICAgICByZXNwb25zZS5pbmNsdWRlQ2VydGlmaWNhdGVJbmZv
KCk7CisgICAgICAgIHJlc3BvbnNlLmluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8obmVnb3RpYXRlZExl
Z2FjeVRMUyA9PSBOZWdvdGlhdGVkTGVnYWN5VExTOjpZZXMgPyBVc2VkTGVnYWN5VExTOjpZZXMg
OiBVc2VkTGVnYWN5VExTOjpObyk7CiAKICAgICBtX2NsaWVudC5nZXQoKS5kaWRSZWNlaXZlUmVz
cG9uc2UoV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0K
QEAgLTI2NSw3ICsyNjMsNyBAQCB2b2lkIE5ldHdvcmtMb2FkOjp0aHJvdHRsZURlbGF5Q29tcGxl
dGVkCiAKICAgICBhdXRvIHRocm90dGxlID0gV1RGTW92ZShtX3Rocm90dGxlKTsKIAotICAgIG5v
dGlmeURpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHRocm90dGxlLT5yZXNwb25zZSksIFdURk1v
dmUodGhyb3R0bGUtPnJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBub3RpZnlEaWRS
ZWNlaXZlUmVzcG9uc2UoV1RGTW92ZSh0aHJvdHRsZS0+cmVzcG9uc2UpLCBOZWdvdGlhdGVkTGVn
YWN5VExTOjpObywgV1RGTW92ZSh0aHJvdHRsZS0+cmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcikp
OwogfQogCiB2b2lkIE5ldHdvcmtMb2FkOjpkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVz
U2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKQpJbmRleDogU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAkocmV2aXNpb24gMjU1NTgwKQorKysg
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCSh3b3JraW5nIGNvcHkp
CkBAIC03NCwxNiArNzQsMTUgQEAgcHJpdmF0ZToKICAgICAvLyBOZXR3b3JrRGF0YVRhc2tDbGll
bnQKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlv
bkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5n
ZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYm
KSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIm
JikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBm
aW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50
NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwogICAgIHZvaWQgd2FzQmxvY2tl
ZCgpIGZpbmFsOwogICAgIHZvaWQgY2Fubm90U2hvd1VSTCgpIGZpbmFsOwogICAgIHZvaWQgd2Fz
QmxvY2tlZEJ5UmVzdHJpY3Rpb25zKCkgZmluYWw7Ci0gICAgdm9pZCBuZWdvdGlhdGVkTGVnYWN5
VExTKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIG5vdGlmeURpZFJlY2VpdmVSZXNwb25zZShX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJik7
CisgICAgdm9pZCBub3RpZnlEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYp
OwogICAgIHZvaWQgdGhyb3R0bGVEZWxheUNvbXBsZXRlZCgpOwogCiAgICAgc3RkOjpyZWZlcmVu
Y2Vfd3JhcHBlcjxOZXR3b3JrTG9hZENsaWVudD4gbV9jbGllbnQ7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHJl
dmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDggQEAgY2xhc3MgTmV0
d29ya0xvYWRDaGVja2VyOwogY2xhc3MgU2VydmljZVdvcmtlckZldGNoVGFzazsKIGNsYXNzIFdl
YlNXU2VydmVyQ29ubmVjdGlvbjsKIAorZW51bSBjbGFzcyBOZWdvdGlhdGVkTGVnYWN5VExTIDog
Ym9vbDsKKwogc3RydWN0IFJlc291cmNlTG9hZEluZm87CiAKIG5hbWVzcGFjZSBOZXR3b3JrQ2Fj
aGUgewpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAJKHJl
dmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjAsNyArMTYwLDcgQEAgdm9pZCBQaW5nTG9hZDo6ZGlk
UmVjZWl2ZUNoYWxsZW5nZShBdXRoZQogICAgIGRpZEZpbmlzaChSZXNvdXJjZUVycm9yIHsgU3Ry
aW5nKCksIDAsIGN1cnJlbnRVUkwoKSwgIkZhaWxlZCBIVFRQIGF1dGhlbnRpY2F0aW9uIl9zLCBS
ZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9sIH0pOwogfQogCi12b2lkIFBpbmdMb2Fk
OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNwb25z
ZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFBpbmdMb2FkOjpk
aWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVk
TGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlIC0gaHR0
cFN0YXR1c0NvZGU6ICVkIiwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7CiAgICAgYXV0byB3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUGluZ0xvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1BpbmdMb2FkLmgJKHJldmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENv
bXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShX
ZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBD
aGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhh
bmRsZXImJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25I
YW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRy
aWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2Vu
dCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLmgJKHJldmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAkod29ya2luZyBjb3B5KQpAQCAtNTQs
NyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5
dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVn
b3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJik7CiAgICAgdm9p
ZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29u
c3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5k
bGVyJiYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYm
KTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYp
OwogCiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRp
b25IYW5kbGVyJiYpOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCShyZXZpc2lvbiAyNTU1ODAp
CisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0Nv
Y29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNzMsMTAgKzM3MywxMCBAQCB2b2lkIE5ldHdvcmtE
YXRhVGFza0NvY29hOjpkaWRSZWNlaXZlRGF0CiAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZl
RGF0YShXVEZNb3ZlKGRhdGEpKTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgV2Vi
S2l0OjpSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVkTGVnYWN5VExTIG5lZ290aWF0ZWRMZWdh
Y3lUTFMsIFdlYktpdDo6UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIEVNSVRfU0lHTlBPU1QobV90YXNrLCAicmVjZWl2ZWQgcmVzcG9uc2UgaGVh
ZGVycyIpOwotICAgIE5ldHdvcmtEYXRhVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUo
cmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgTmV0d29ya0RhdGFU
YXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSksIG5lZ290aWF0ZWRMZWdh
Y3lUTFMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrRGF0
YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2Nv
YS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtTZXNzaW9uQ29jb2EubW0JKHJldmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQkod29ya2luZyBjb3B5
KQpAQCAtODE4LDI0ICs4MTgsMjIgQEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24g
KilzZXNzaQogICAgIGlmIChhdXRvKiBuZXR3b3JrRGF0YVRhc2sgPSBbc2VsZiBleGlzdGluZ1Rh
c2s6ZGF0YVRhc2tdKSB7CiAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAg
ICAgICAgYm9vbCBuZWdvdGlhdGVkTGVnYWN5VExTID0gZmFsc2U7CisgICAgICAgIE5lZ290aWF0
ZWRMZWdhY3lUTFMgbmVnb3RpYXRlZExlZ2FjeVRMUyA9IE5lZ290aWF0ZWRMZWdhY3lUTFM6Ok5v
OwogI2lmIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkKICAgICAgICAgTlNVUkxTZXNzaW9u
VGFza1RyYW5zYWN0aW9uTWV0cmljcyAqbWV0cmljcyA9IGRhdGFUYXNrLl9pbmNvbXBsZXRlVGFz
a01ldHJpY3MudHJhbnNhY3Rpb25NZXRyaWNzLmxhc3RPYmplY3Q7CiAgICAgICAgIGF1dG8gdGxz
VmVyc2lvbiA9ICh0bHNfcHJvdG9jb2xfdmVyc2lvbl90KW1ldHJpY3MubmVnb3RpYXRlZFRMU1By
b3RvY29sVmVyc2lvbi51bnNpZ25lZFNob3J0VmFsdWU7CiAgICAgICAgIGlmICh0bHNWZXJzaW9u
ID09IHRsc19wcm90b2NvbF92ZXJzaW9uX1RMU3YxMCB8fCB0bHNWZXJzaW9uID09IHRsc19wcm90
b2NvbF92ZXJzaW9uX1RMU3YxMSkKLSAgICAgICAgICAgIG5lZ290aWF0ZWRMZWdhY3lUTFMgPSB0
cnVlOworICAgICAgICAgICAgbmVnb3RpYXRlZExlZ2FjeVRMUyA9IE5lZ290aWF0ZWRMZWdhY3lU
TFM6OlllczsKICAgICAgICAgVU5VU0VEX1BBUkFNKG1ldHJpY3MpOwogI2Vsc2UgLy8gV2UgZG8g
bm90IG5lZWQgdG8gY2hlY2sgX1RMU05lZ290aWF0ZWRQcm90b2NvbFZlcnNpb24gaWYgd2UgaGF2
ZSBtZXRyaWNzLm5lZ290aWF0ZWRUTFNQcm90b2NvbFZlcnNpb24gYmVjYXVzZSBpdCB3b3JrcyBh
dCByZXNwb25zZSB0aW1lIGV2ZW4gYmVmb3JlIHJkYXI6Ly9wcm9ibGVtLzU2NTIyNjAxCiAgICAg
ICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgIGlmIChbZGF0
YVRhc2sgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfVExTTmVnb3RpYXRlZFByb3RvY29s
VmVyc2lvbildKSB7CiAgICAgICAgICAgICBTU0xQcm90b2NvbCB0bHNWZXJzaW9uID0gW2RhdGFU
YXNrIF9UTFNOZWdvdGlhdGVkUHJvdG9jb2xWZXJzaW9uXTsKICAgICAgICAgICAgIGlmICh0bHNW
ZXJzaW9uID09IGtUTFNQcm90b2NvbDExIHx8IHRsc1ZlcnNpb24gPT0ga1RMU1Byb3RvY29sMSkK
LSAgICAgICAgICAgICAgICBuZWdvdGlhdGVkTGVnYWN5VExTID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICBuZWdvdGlhdGVkTGVnYWN5VExTID0gTmVnb3RpYXRlZExlZ2FjeVRMUzo6WWVzOwogICAg
ICAgICB9CiAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogI2VuZGlm
Ci0gICAgICAgIGlmIChuZWdvdGlhdGVkTGVnYWN5VExTKQotICAgICAgICAgICAgbmV0d29ya0Rh
dGFUYXNrLT5uZWdvdGlhdGVkTGVnYWN5VExTKCk7CiAgICAgICAgIAogICAgICAgICAvLyBBdm9p
ZCBNSU1FIHR5cGUgc25pZmZpbmcgaWYgdGhlIHJlc3BvbnNlIGNvbWVzIGJhY2sgYXMgMzA0IE5v
dCBNb2RpZmllZC4KICAgICAgICAgaW50IHN0YXR1c0NvZGUgPSBbcmVzcG9uc2UgaXNLaW5kT2ZD
bGFzczpOU0hUVFBVUkxSZXNwb25zZS5jbGFzc10gPyBbKE5TSFRUUFVSTFJlc3BvbnNlICopcmVz
cG9uc2Ugc3RhdHVzQ29kZV0gOiAwOwpAQCAtODU0LDcgKzg1Miw3IEBAIC0gKHZvaWQpVVJMU2Vz
c2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2kKICAgICAgICAgY29weVRpbWluZ0RhdGEoW2RhdGFU
YXNrIF90aW1pbmdEYXRhXSwgcmVzb3VyY2VSZXNwb25zZS5kZXByZWNhdGVkTmV0d29ya0xvYWRN
ZXRyaWNzKCkpOwogCiAgICAgICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXJDb3B5ID0gQmxvY2tf
Y29weShjb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgICAgIG5ldHdvcmtEYXRhVGFzay0+ZGlkUmVj
ZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzb3VyY2VSZXNwb25zZSksIFtjb21wbGV0aW9uSGFuZGxl
ckNvcHksIHRhc2tJZGVudGlmaWVyXShXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9u
KSB7CisgICAgICAgIG5ldHdvcmtEYXRhVGFzay0+ZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUo
cmVzb3VyY2VSZXNwb25zZSksIG5lZ290aWF0ZWRMZWdhY3lUTFMsIFtjb21wbGV0aW9uSGFuZGxl
ckNvcHksIHRhc2tJZGVudGlmaWVyXShXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9u
KSB7CiAjaWYgIUxPR19ESVNBQkxFRAogICAgICAgICAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAi
JWxsdSBkaWRSZWNlaXZlUmVzcG9uc2UgY29tcGxldGlvbkhhbmRsZXIgKCVkKSIsIHRhc2tJZGVu
dGlmaWVyLCBwb2xpY3lBY3Rpb24pOwogI2Vsc2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAJKHJl
dmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3
b3JrRGF0YVRhc2tDdXJsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI0LDcgKzIyNCw3IEBAIGJv
b2wgTmV0d29ya0RhdGFUYXNrQ3VybDo6c2hvdWxkUmVkaXJlY3QKIAogdm9pZCBOZXR3b3JrRGF0
YVRhc2tDdXJsOjppbnZva2VEaWRSZWNlaXZlUmVzcG9uc2UoKQogewotICAgIGRpZFJlY2VpdmVS
ZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlKG1fcmVzcG9uc2UpLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpXShQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKSB7CisgICAgZGlk
UmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UobV9yZXNwb25zZSksIE5lZ290aWF0ZWRM
ZWdhY3lUTFM6Ok5vLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShQb2xp
Y3lBY3Rpb24gcG9saWN5QWN0aW9uKSB7CiAgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpD
YW5jZWxpbmcgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6Q29tcGxldGVkKQogICAgICAgICAgICAgcmV0
dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0Rh
dGFUYXNrU291cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCShyZXZpc2lvbiAyNTU1ODApCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM3OCw3ICszNzgsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6
OmRpc3BhdGNoRGlkUmVjCiAgICAgZGVwcmVjYXRlZFJlc3BvbnNlTWV0cmljcy5yZXF1ZXN0U3Rh
cnQgPSBtX25ldHdvcmtMb2FkTWV0cmljcy5yZXF1ZXN0U3RhcnQ7CiAgICAgZGVwcmVjYXRlZFJl
c3BvbnNlTWV0cmljcy5yZXNwb25zZVN0YXJ0ID0gbV9uZXR3b3JrTG9hZE1ldHJpY3MucmVzcG9u
c2VTdGFydDsKIAotICAgIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlKG1fcmVz
cG9uc2UpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShQb2xpY3lBY3Rp
b24gcG9saWN5QWN0aW9uKSB7CisgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9u
c2UobV9yZXNwb25zZSksIE5lZ290aWF0ZWRMZWdhY3lUTFM6Ok5vLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpXShQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKSB7CiAgICAg
ICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDYW5jZWxpbmcgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6
Q29tcGxldGVkKSB7CiAgICAgICAgICAgICBjbGVhclJlcXVlc3QoKTsKICAgICAgICAgICAgIHJl
dHVybjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuY3BwCShy
ZXZpc2lvbiAyNTU1ODApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE3LDcgKzMxNyw3IEBAIHZvaWQgUGFnZUxvYWRTdGF0
ZTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG8KICAgICBtX3VuY29tbWl0dGVkU3RhdGUudW5yZWFjaGFi
bGVVUkwgPSBtX2xhc3RVbnJlYWNoYWJsZVVSTDsKIH0KIAotdm9pZCBQYWdlTG9hZFN0YXRlOjpk
aWRDb21taXRMb2FkKGNvbnN0IFRyYW5zYWN0aW9uOjpUb2tlbiYgdG9rZW4sIFdlYkNlcnRpZmlj
YXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBib29sIGhhc0luc2VjdXJlQ29udGVudCkKK3ZvaWQg
UGFnZUxvYWRTdGF0ZTo6ZGlkQ29tbWl0TG9hZChjb25zdCBUcmFuc2FjdGlvbjo6VG9rZW4mIHRv
a2VuLCBXZWJDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCBoYXNJbnNlY3Vy
ZUNvbnRlbnQsIGJvb2wgdXNlZExlZ2FjeVRMUykKIHsKICAgICBBU1NFUlRfVU5VU0VEKHRva2Vu
LCAmdG9rZW4ubV9wYWdlTG9hZFN0YXRlID09IHRoaXMpOwogICAgIEFTU0VSVChtX3VuY29tbWl0
dGVkU3RhdGUuc3RhdGUgPT0gU3RhdGU6OlByb3Zpc2lvbmFsKTsKQEAgLTMyOCw3ICszMjgsNyBA
QCB2b2lkIFBhZ2VMb2FkU3RhdGU6OmRpZENvbW1pdExvYWQoY29uc3QgCiAKICAgICBtX3VuY29t
bWl0dGVkU3RhdGUudXJsID0gbV91bmNvbW1pdHRlZFN0YXRlLnByb3Zpc2lvbmFsVVJMOwogICAg
IG1fdW5jb21taXR0ZWRTdGF0ZS5wcm92aXNpb25hbFVSTCA9IFN0cmluZygpOwotICAgIG1fdW5j
b21taXR0ZWRTdGF0ZS5uZWdvdGlhdGVkTGVnYWN5VExTID0gZmFsc2U7CisgICAgbV91bmNvbW1p
dHRlZFN0YXRlLm5lZ290aWF0ZWRMZWdhY3lUTFMgPSB1c2VkTGVnYWN5VExTOwogCiAgICAgbV91
bmNvbW1pdHRlZFN0YXRlLnRpdGxlID0gU3RyaW5nKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5oCShyZXZpc2lvbiAyNTU1ODApCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw3ICsx
NjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92
aXNpb25hbExvYWQoY29uc3QgVHJhbnNhY3Rpb246OlRva2VuJiwgY29uc3QgU3RyaW5nJiB1cmwp
OwogICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBUcmFuc2FjdGlvbjo6VG9r
ZW4mKTsKIAotICAgIHZvaWQgZGlkQ29tbWl0TG9hZChjb25zdCBUcmFuc2FjdGlvbjo6VG9rZW4m
LCBXZWJDZXJ0aWZpY2F0ZUluZm8mLCBib29sIGhhc0luc2VjdXJlQ29udGVudCk7CisgICAgdm9p
ZCBkaWRDb21taXRMb2FkKGNvbnN0IFRyYW5zYWN0aW9uOjpUb2tlbiYsIFdlYkNlcnRpZmljYXRl
SW5mbyYsIGJvb2wgaGFzSW5zZWN1cmVDb250ZW50LCBib29sIHVzZWRMZWdhY3lUTFMpOwogICAg
IHZvaWQgZGlkRmluaXNoTG9hZChjb25zdCBUcmFuc2FjdGlvbjo6VG9rZW4mKTsKICAgICB2b2lk
IGRpZEZhaWxMb2FkKGNvbnN0IFRyYW5zYWN0aW9uOjpUb2tlbiYpOwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCShyZXZpc2lv
biAyNTU1ODApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIFByb3Zpc2lvbmFs
UGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzCiAgICAgbV9wYWdlLmRpZEZhaWxQcm92aXNpb25hbExv
YWRGb3JGcmFtZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBmcmFtZUlELCBXVEZNb3ZlKGZy
YW1lU2VjdXJpdHlPcmlnaW4pLCBuYXZpZ2F0aW9uSUQsIHByb3Zpc2lvbmFsVVJMLCBlcnJvciwg
d2lsbENvbnRpbnVlTG9hZGluZywgdXNlckRhdGEpOyAvLyBNYXkgZGVsZXRlIHx0aGlzfC4KIH0K
IAotdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZy
YW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJ
bmZvLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0lu
c2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYg
dXNlckRhdGEpCit2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJh
bWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWlu
dDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0
aWZpY2F0ZUluZm8sIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250YWluc1BsdWdpbkRvY3Vt
ZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2Vj
dXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIGlmICghdmFsaWRh
dGVJbnB1dChmcmFtZUlELCBuYXZpZ2F0aW9uSUQpKQogICAgICAgICByZXR1cm47CkBAIC0yNzQs
NyArMjc0LDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZAogICAg
IG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlSUQpOwogCiAgICAgbV93YXNDb21taXR0
ZWQgPSB0cnVlOwotICAgIG1fcGFnZS5jb21taXRQcm92aXNpb25hbFBhZ2UoZnJhbWVJRCwgbmF2
aWdhdGlvbklELCBtaW1lVHlwZSwgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIGZyYW1l
TG9hZFR5cGUsIGNlcnRpZmljYXRlSW5mbywgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgZm9yY2Vk
SGFzSW5zZWN1cmVDb250ZW50LCB1c2VyRGF0YSk7IC8vIFdpbGwgZGVsZXRlIHx0aGlzfC4KKyAg
ICBtX3BhZ2UuY29tbWl0UHJvdmlzaW9uYWxQYWdlKGZyYW1lSUQsIG5hdmlnYXRpb25JRCwgbWlt
ZVR5cGUsIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBmcmFtZUxvYWRUeXBlLCBjZXJ0
aWZpY2F0ZUluZm8sIHVzZWRMZWdhY3lUTFMsIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIGZvcmNl
ZEhhc0luc2VjdXJlQ29udGVudCwgdXNlckRhdGEpOyAvLyBXaWxsIGRlbGV0ZSB8dGhpc3wuCiB9
CiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25E
YXRhKGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmIHN0b3JlLCBGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQ
YWdlUHJveHkuaAkocmV2aXNpb24gMjU1NTgwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UHJvdmlzaW9uYWxQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDcgKzEyMiw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcsIFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRDcmVhdGVNYWluRnJhbWUoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IFVSTCYmLCBVUkwmJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmKTsKLSAgICB2b2lk
IGRpZENvbW1pdExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3Rv
bUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6
Q2VydGlmaWNhdGVJbmZvJiwgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxX
ZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgY29u
c3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRpZENvbW1pdExvYWRGb3JGcmFtZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVM
b2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiwgYm9vbCB1c2VkTGVnYWN5
VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0lu
c2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYp
OwogICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9y
aWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJM
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgV2ViQ29yZTo6V2lsbENvbnRpbnVlTG9h
ZGluZywgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIHN0YXJ0VVJMU2NoZW1lVGFzayhVUkxT
Y2hlbWVUYXNrUGFyYW1ldGVycyYmKTsKICAgICB2b2lkIGJhY2tGb3J3YXJkR29Ub0l0ZW0oY29u
c3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIGNvbnN0IFdlYkJhY2tGb3J3YXJkTGlz
dENvdW50cyYpPiYmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAkocmV2aXNpb24gMjU1NTgwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE1Nyw3ICszMTU3LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpbwogICAgIHNlbmRlci0+c2VuZChhY3Rpb24s
IG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSA6IDAsIGRvd25sb2FkSUQs
IFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpjb21t
aXRQcm92aXNpb25hbFBhZ2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRl
bnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlm
aWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwg
T3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNv
bnRlbnQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpjb21t
aXRQcm92aXNpb25hbFBhZ2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRl
bnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlm
aWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250
YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+
IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewog
ICAgIEFTU0VSVChtX3Byb3Zpc2lvbmFsUGFnZSk7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAiY29tbWl0UHJvdmlzaW9uYWxQYWdlOiBuZXdQSUQgPSAlaSIsIG1fcHJvdmlz
aW9uYWxQYWdlLT5wcm9jZXNzKCkucHJvY2Vzc0lkZW50aWZpZXIoKSk7CkBAIC0zMTkxLDcgKzMx
OTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlCiAgICAgY29u
c3QgYXV0byBvbGRXZWJQYWdlSUQgPSBtX3dlYlBhZ2VJRDsKICAgICBzd2FwVG9Qcm92aXNpb25h
bFBhZ2Uoc3RkOjpleGNoYW5nZShtX3Byb3Zpc2lvbmFsUGFnZSwgbnVsbHB0cikpOwogCi0gICAg
ZGlkQ29tbWl0TG9hZEZvckZyYW1lKGZyYW1lSUQsIG5hdmlnYXRpb25JRCwgbWltZVR5cGUsIGZy
YW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBmcmFtZUxvYWRUeXBlLCBjZXJ0aWZpY2F0ZUlu
Zm8sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgdXNl
ckRhdGEpOworICAgIGRpZENvbW1pdExvYWRGb3JGcmFtZShmcmFtZUlELCBuYXZpZ2F0aW9uSUQs
IG1pbWVUeXBlLCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgZnJhbWVMb2FkVHlwZSwg
Y2VydGlmaWNhdGVJbmZvLCB1c2VkTGVnYWN5VExTLCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBm
b3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIHVzZXJEYXRhKTsKIAogICAgIG1faW5zcGVjdG9yQ29u
dHJvbGxlci0+ZGlkQ29tbWl0UHJvdmlzaW9uYWxQYWdlKG9sZFdlYlBhZ2VJRCwgbV93ZWJQYWdl
SUQpOwogfQpAQCAtNDQ3Nyw3ICs0NDc3LDcgQEAgc3RhdGljIE9wdGlvblNldDxDcm9zc1NpdGVO
YXZpZ2F0aW9uRGF0YQogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRM
b2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92
aWRlciwgdWludDMyX3Qgb3BhcXVlRnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlm
aWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwg
T3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50PiBoYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVz
ZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJh
bWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWlu
dDMyX3Qgb3BhcXVlRnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZv
JiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250YWluc1BsdWdp
bkRvY3VtZW50LCBPcHRpb25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+IGhhc0luc2VjdXJlQ29udGVu
dCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIExPRyhMb2FkaW5nLCAiKExvYWRp
bmcpIFdlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBkaWRDb21taXRMb2FkRm9yRnJhbWUgaW4gbmF2
aWdhdGlvbiAlIiBQUkl1NjQsIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uSUQp
OwogICAgIExPRyhCYWNrRm9yd2FyZCwgIihCYWNrL0ZvcndhcmQpIEFmdGVyIGxvYWQgY29tbWl0
LCBiYWNrL2ZvcndhcmQgbGlzdCBpcyBub3c6JXMiLCBtX2JhY2tGb3J3YXJkTGlzdC0+bG9nZ2lu
Z1N0cmluZygpKTsKQEAgLTQ1MTksNyArNDUxOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRD
b21taXRMb2FkRm9yRnJhbWUKICAgICBib29sIG1hcmtQYWdlSW5zZWN1cmUgPSBoYXNJbnNlY3Vy
ZUNvbnRlbnQgPyBoYXNJbnNlY3VyZUNvbnRlbnQudmFsdWUoKSA9PSBIYXNJbnNlY3VyZUNvbnRl
bnQ6OlllcyA6IG1fdHJlYXRzU0hBMUNlcnRpZmljYXRlc0FzSW5zZWN1cmUgJiYgY2VydGlmaWNh
dGVJbmZvLmNvbnRhaW5zTm9uUm9vdFNIQTFTaWduZWRDZXJ0aWZpY2F0ZSgpOwogCiAgICAgaWYg
KGZyYW1lLT5pc01haW5GcmFtZSgpKSB7Ci0gICAgICAgIG1fcGFnZUxvYWRTdGF0ZS5kaWRDb21t
aXRMb2FkKHRyYW5zYWN0aW9uLCB3ZWJDZXJ0aWZpY2F0ZUluZm8sIG1hcmtQYWdlSW5zZWN1cmUp
OworICAgICAgICBtX3BhZ2VMb2FkU3RhdGUuZGlkQ29tbWl0TG9hZCh0cmFuc2FjdGlvbiwgd2Vi
Q2VydGlmaWNhdGVJbmZvLCBtYXJrUGFnZUluc2VjdXJlLCB1c2VkTGVnYWN5VExTKTsKICAgICAg
ICAgbV9zaG91bGRTdXBwcmVzc05leHRBdXRvbWF0aWNOYXZpZ2F0aW9uU25hcHNob3QgPSBmYWxz
ZTsKICAgICB9IGVsc2UgaWYgKG1hcmtQYWdlSW5zZWN1cmUpCiAgICAgICAgIG1fcGFnZUxvYWRT
dGF0ZS5kaWREaXNwbGF5T3JSdW5JbnNlY3VyZUNvbnRlbnQodHJhbnNhY3Rpb24pOwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI1NTU4MCkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTg2LDcgKzE1ODYsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIFByb3Zpc2lvbmFsUGFn
ZVByb3h5KiBwcm92aXNpb25hbFBhZ2VQcm94eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdmlzaW9u
YWxQYWdlLmdldCgpOyB9Ci0gICAgdm9pZCBjb21taXRQcm92aXNpb25hbFBhZ2UoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1l
TG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYsIGJvb2wgY29udGFpbnNQ
bHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3Jj
ZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBjb21taXRQ
cm92aXNpb25hbFBhZ2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50
UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmlj
YXRlSW5mbyYsIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50
LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJl
Q29udGVudCwgY29uc3QgVXNlckRhdGEmKTsKIAogICAgIC8vIExvZ2ljIHNoYXJlZCBiZXR3ZWVu
IHRoZSBXZWJQYWdlUHJveHkgYW5kIHRoZSBQcm92aXNpb25hbFBhZ2VQcm94eS4KICAgICB2b2lk
IGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94
eT4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVS
TCYmLCBVUkwmJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmKTsKQEAgLTE3MzYsNyAr
MTczNiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZy
YW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRDaGFuZ2VQcm92aXNp
b25hbFVSTEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBVUkwmJik7CiAgICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBm
cmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYg
cHJvdmlzaW9uYWxVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBXZWJDb3JlOjpX
aWxsQ29udGludWVMb2FkaW5nLCBjb25zdCBVc2VyRGF0YSYpOwotICAgIHZvaWQgZGlkQ29tbWl0
TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFBy
b3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0
ZUluZm8mLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhh
c0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0
YSYpOworICAgIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29s
IGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBj
b25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mLCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wg
Y29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250
ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9p
ZCBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZEZp
bmlzaExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZEZhaWxMb2FkRm9yRnJhbWUo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBVc2VyRGF0YSYpOwpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24g
MjU1NTgwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNyArMTI2LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZVByb3h5IHsKICAgICBEaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciBmcmFtZUlEKQogICAgIERpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJh
bWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgVVJMIHVybCkKICAgICBEaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBTdHJpbmcgcHJv
dmlzaW9uYWxVUkwsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIGVudW06Ym9vbCBXZWJD
b3JlOjpXaWxsQ29udGludWVMb2FkaW5nIHdpbGxDb250aW51ZUxvYWRpbmcsIFdlYktpdDo6VXNl
ckRhdGEgdXNlckRhdGEpCi0gICAgRGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFN0cmluZyBtaW1lVHlw
ZSwgYm9vbCBoYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGxvYWRUeXBlLCBXZWJD
b3JlOjpDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvLCBib29sIGNvbnRhaW5zUGx1Z2lu
RG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFz
SW5zZWN1cmVDb250ZW50LCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQorICAgIERpZENvbW1p
dExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBTdHJpbmcgbWltZVR5cGUsIGJvb2wgaGFzQ3VzdG9tQ29udGVudFByb3Zp
ZGVyLCB1aW50MzJfdCBsb2FkVHlwZSwgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvIGNlcnRpZmlj
YXRlSW5mbywgYm9vbCB1c2VkTGVnYWN5VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQs
IE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVD
b250ZW50LCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIERpZEZhaWxMb2FkRm9yRnJh
bWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0
YSkKICAgICBEaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJLaXQ6OlVzZXJEYXRhIHVz
ZXJEYXRhKQogICAgIERpZEZpbmlzaExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJE
YXRhKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAyNTU1
ODApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NjAsNyArNTYwLDcgQEAgdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDbwogICAgIHdlYlBhZ2UtPnNhbmRib3hF
eHRlbnNpb25UcmFja2VyKCkuZGlkQ29tbWl0UHJvdmlzaW9uYWxMb2FkKG1fZnJhbWUpOwogCiAg
ICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCi0gICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpEaWRDb21taXRMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBk
b2N1bWVudExvYWRlci5uYXZpZ2F0aW9uSUQoKSwgZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKS5t
aW1lVHlwZSgpLCBtX2ZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBzdGF0aWNfY2FzdDx1
aW50MzJfdD4obV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmxvYWRUeXBlKCkpLCB2YWx1
ZU9yQ29tcHV0ZShkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLmNlcnRpZmljYXRlSW5mbygpLCBb
XSB7IHJldHVybiBDZXJ0aWZpY2F0ZUluZm8oKTsgfSksIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5k
b2N1bWVudCgpLT5pc1BsdWdpbkRvY3VtZW50KCksIGhhc0luc2VjdXJlQ29udGVudCwgVXNlckRh
dGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2Vy
RGF0YS5nZXQoKSkuZ2V0KCkpKSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEaWRDb21taXRMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBkb2N1bWVu
dExvYWRlci5uYXZpZ2F0aW9uSUQoKSwgZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKS5taW1lVHlw
ZSgpLCBtX2ZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBzdGF0aWNfY2FzdDx1aW50MzJf
dD4obV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmxvYWRUeXBlKCkpLCB2YWx1ZU9yQ29t
cHV0ZShkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLmNlcnRpZmljYXRlSW5mbygpLCBbXSB7IHJl
dHVybiBDZXJ0aWZpY2F0ZUluZm8oKTsgfSksIGRvY3VtZW50TG9hZGVyLnJlc3BvbnNlKCkudXNl
ZExlZ2FjeVRMUygpLCBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKS0+aXNQbHVnaW5E
b2N1bWVudCgpLCBoYXNJbnNlY3VyZUNvbnRlbnQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkp
OwogICAgIHdlYlBhZ2UtPmRpZENvbW1pdExvYWQobV9mcmFtZSk7CiB9CiAKSW5kZXg6IFRvb2xz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NTY4
MikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisy
MDIwLTAyLTA0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgRml4IHJhY2UgY29uZGl0aW9uIGZvciBXS1dlYlZpZXcuX25lZ290aWF0ZWRMZWdh
Y3lUTFMgd2hlbiBsb2FkaW5nIG1haW4gcmVzb3VvcmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcyMDcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIVFRQU2VydmVyIG5vdyBzdXBwb3J0cyBIVFRQUy4g
VGVsbCB5b3VyIGZyaWVuZHMhCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0NoYWxsZW5nZS5tbToKKyAgICAgICAgKHRlc3RDZXJ0aWZpY2F0ZSk6CisgICAgICAg
ICh0ZXN0SWRlbnRpdHkpOgorICAgICAgICAoY3JlZGVudGlhbFdpdGhJZGVudGl0eSk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UTFNEZXByZWNhdGlvbi5tbToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OndlYlZpZXdXaXRoTmF2aWdhdGlvbkRlbGVnYXRlKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
Y29jb2EvSFRUUFNlcnZlci5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNl
cnZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OkhUVFBTZXJ2ZXIp
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6cmVxdWVzdCBjb25zdCk6CisK
IDIwMjAtMDItMDQgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAg
ICAgICAgIFtDTWFrZV0gQWRkIENhaXJvOjpDYWlybyB0YXJnZXQKSW5kZXg6IFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2hhbGxlbmdlLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2hhbGxlbmdlLm1tCShyZXZpc2lv
biAyNTU1ODApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NoYWxs
ZW5nZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogCiAjaW1wb3J0ICJjb25m
aWcuaCIKIAorI2ltcG9ydCAiSFRUUFNlcnZlci5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRp
ZXMuaCIKICNpbXBvcnQgIlRDUFNlcnZlci5oIgogI2ltcG9ydCAiVGVzdC5oIgpAQCAtNDMsMTEg
KzQ0LDE0IEBACiAKIHN0YXRpYyBib29sIG5hdmlnYXRpb25GaW5pc2hlZDsKIAotc3RhdGljIFJl
dGFpblB0cjxOU1VSTENyZWRlbnRpYWw+IGNyZWRlbnRpYWxXaXRoSWRlbnRpdHkoKQorc3RhdGlj
IFJldGFpblB0cjxTZWNDZXJ0aWZpY2F0ZVJlZj4gdGVzdENlcnRpZmljYXRlKCkKIHsKICAgICBh
dXRvIGNlcnRpZmljYXRlQnl0ZXMgPSBUZXN0V2ViS2l0QVBJOjpUQ1BTZXJ2ZXI6OnRlc3RDZXJ0
aWZpY2F0ZSgpOwotICAgIGF1dG8gY2VydGlmaWNhdGUgPSBhZG9wdENGKFNlY0NlcnRpZmljYXRl
Q3JlYXRlV2l0aERhdGEobnVsbHB0ciwgKF9fYnJpZGdlIENGRGF0YVJlZilbTlNEYXRhIGRhdGFX
aXRoQnl0ZXM6Y2VydGlmaWNhdGVCeXRlcy5kYXRhKCkgbGVuZ3RoOmNlcnRpZmljYXRlQnl0ZXMu
c2l6ZSgpXSkpOwotICAgIAorICAgIHJldHVybiBhZG9wdENGKFNlY0NlcnRpZmljYXRlQ3JlYXRl
V2l0aERhdGEobnVsbHB0ciwgKF9fYnJpZGdlIENGRGF0YVJlZilbTlNEYXRhIGRhdGFXaXRoQnl0
ZXM6Y2VydGlmaWNhdGVCeXRlcy5kYXRhKCkgbGVuZ3RoOmNlcnRpZmljYXRlQnl0ZXMuc2l6ZSgp
XSkpOworfQorCitSZXRhaW5QdHI8U2VjSWRlbnRpdHlSZWY+IHRlc3RJZGVudGl0eSgpCit7CiAg
ICAgYXV0byBwcml2YXRlS2V5Qnl0ZXMgPSBUZXN0V2ViS2l0QVBJOjpUQ1BTZXJ2ZXI6OnRlc3RQ
cml2YXRlS2V5KCk7CiAgICAgTlNEYXRhICpkZXJFbmNvZGVkUHJpdmF0ZUtleSA9IFtOU0RhdGEg
ZGF0YVdpdGhCeXRlczpwcml2YXRlS2V5Qnl0ZXMuZGF0YSgpIGxlbmd0aDpwcml2YXRlS2V5Qnl0
ZXMuc2l6ZSgpXTsKICAgICBOU0RpY3Rpb25hcnkqIG9wdGlvbnMgPSBAewpAQCAtNjEsMTAgKzY1
LDE1IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNVUkxDcmVkZW50aWFsPiBjcmVkZW4KICAgICBFWFBF
Q1RfTlVMTChlcnJvcik7CiAgICAgRVhQRUNUX05PVF9OVUxMKHByaXZhdGVLZXkuZ2V0KCkpOwog
Ci0gICAgYXV0byBpZGVudGl0eSA9IGFkb3B0Q0YoU2VjSWRlbnRpdHlDcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgY2VydGlmaWNhdGUuZ2V0KCksIHByaXZhdGVLZXkuZ2V0KCkpKTsKKyAgICBy
ZXR1cm4gYWRvcHRDRihTZWNJZGVudGl0eUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB0ZXN0
Q2VydGlmaWNhdGUoKS5nZXQoKSwgcHJpdmF0ZUtleS5nZXQoKSkpOworfQorCitzdGF0aWMgUmV0
YWluUHRyPE5TVVJMQ3JlZGVudGlhbD4gY3JlZGVudGlhbFdpdGhJZGVudGl0eSgpCit7CisgICAg
YXV0byBpZGVudGl0eSA9IHRlc3RJZGVudGl0eSgpOwogICAgIEVYUEVDVF9OT1RfTlVMTChpZGVu
dGl0eSk7CiAgICAgCi0gICAgcmV0dXJuIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbFdpdGhJ
ZGVudGl0eTppZGVudGl0eS5nZXQoKSBjZXJ0aWZpY2F0ZXM6QFsoaWQpY2VydGlmaWNhdGUuZ2V0
KCldIHBlcnNpc3RlbmNlOk5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZV07CisgICAgcmV0
dXJuIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbFdpdGhJZGVudGl0eTppZGVudGl0eS5nZXQo
KSBjZXJ0aWZpY2F0ZXM6QFsoaWQpdGVzdENlcnRpZmljYXRlKCkuZ2V0KCldIHBlcnNpc3RlbmNl
Ok5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZV07CiB9CiAKIEBpbnRlcmZhY2UgQ2hhbGxl
bmdlRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+CkluZGV4OiBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RMU0RlcHJlY2F0aW9uLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVExTRGVwcmVj
YXRpb24ubW0JKHJldmlzaW9uIDI1NTU4MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvVExTRGVwcmVjYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3
LDcgQEAKIAogI2lmIEhBVkUoU1NMKQogCisjaW1wb3J0ICJIVFRQU2VydmVyLmgiCiAjaW1wb3J0
ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVENQU2VydmVyLmgiCiAjaW1wb3J0ICJU
ZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCkBAIC0zNyw2ICszOCw3IEBACiAjaW1wb3J0IDxXZWJL
aXQvV2ViS2l0Lmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24uaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0
cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNp
bXBvcnQgPFdlYktpdC9XZWJVSUtpdFN1cHBvcnQuaD4KQEAgLTIyNywxNCArMjI5LDEwIEBAIFRF
U1QoVExTVmVyc2lvbiwgRElTQUJMRURfTmF2aWdhdGlvbkRlbGUKICAgICB9CiB9CiAKLSNpZiBI
QVZFKFRMU19QUk9UT0NPTF9WRVJTSU9OX1QpCi1URVNUKFRMU1ZlcnNpb24sIE5lZ290aWF0ZWRM
ZWdhY3lUTFMpCi17Ci0gICAgVENQU2VydmVyIHNlcnZlcihUQ1BTZXJ2ZXI6OlByb3RvY29sOjpI
VFRQUywgW10gKFNTTCAqc3NsKSB7Ci0gICAgICAgIFRDUFNlcnZlcjo6cmVzcG9uZFdpdGhPSyhz
c2wpOwotICAgICAgICBUQ1BTZXJ2ZXI6OnJlc3BvbmRXaXRoT0soc3NsKTsKLSAgICB9LCB0bHMx
XzEpOworI2lmIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkgfHwgSEFWRShORVRXT1JLX0ZS
QU1FV09SSykKIAorc3RhdGljIHN0ZDo6cGFpcjxSZXRhaW5QdHI8V0tXZWJWaWV3PiwgUmV0YWlu
UHRyPFRlc3ROYXZpZ2F0aW9uRGVsZWdhdGU+PiB3ZWJWaWV3V2l0aE5hdmlnYXRpb25EZWxlZ2F0
ZSgpCit7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdh
dGUgbmV3XSk7CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwog
ICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CkBAIC0y
NDIsNiArMjQwLDIwIEBAIFRFU1QoVExTVmVyc2lvbiwgTmVnb3RpYXRlZExlZ2FjeVRMUykKICAg
ICAgICAgRVhQRUNUX1dLX1NUUkVRKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGlj
YXRpb25NZXRob2QsIE5TVVJMQXV0aGVudGljYXRpb25NZXRob2RTZXJ2ZXJUcnVzdCk7CiAgICAg
ICAgIGNhbGxiYWNrKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNV
UkxDcmVkZW50aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNl
LnNlcnZlclRydXN0XSk7CiAgICAgfV07CisgICAgcmV0dXJuIHsgd2ViVmlldywgZGVsZWdhdGUg
fTsKK30KKworI2VuZGlmIC8vIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkgfHwgSEFWRShO
RVRXT1JLX0ZSQU1FV09SSykKKworI2lmIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkKKwor
VEVTVChUTFNWZXJzaW9uLCBOZWdvdGlhdGVkTGVnYWN5VExTKQoreworICAgIEhUVFBTZXJ2ZXIg
c2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsgImhlbGxvIiB9IH0KKyAgICB9LCBIVFRQU2VydmVy
OjpQcm90b2NvbDo6SHR0cHNXaXRoTGVnYWN5VExTKTsKKworICAgIGF1dG8gW3dlYlZpZXcsIGRl
bGVnYXRlXSA9IHdlYlZpZXdXaXRoTmF2aWdhdGlvbkRlbGVnYXRlKCk7CiAgICAgTlNVUkxSZXF1
ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0
aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVk
LyIsIHNlcnZlci5wb3J0KCldXV07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07
CiAKQEAgLTI2Miw3ICsyNzQsNjQgQEAgVEVTVChUTFNWZXJzaW9uLCBOZWdvdGlhdGVkTGVnYWN5
VExTKQogCiAgICAgW3dlYlZpZXcgcmVtb3ZlT2JzZXJ2ZXI6b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5
UGF0aDpAIl9uZWdvdGlhdGVkTGVnYWN5VExTIl07CiB9Ci0jZW5kaWYKKworI2VuZGlmIC8vIEhB
VkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkKKworI2lmIEhBVkUoTkVUV09SS19GUkFNRVdPUksp
CisKK1RFU1QoVExTVmVyc2lvbiwgTmF2aWdhdGVCYWNrKQoreworICAgIEhUVFBTZXJ2ZXIgbGVn
YWN5VExTU2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsgImhlbGxvIiB9IH0KKyAgICB9LCBIVFRQ
U2VydmVyOjpQcm90b2NvbDo6SHR0cHNXaXRoTGVnYWN5VExTKTsKKworICAgIEhUVFBTZXJ2ZXIg
bW9kZXJuVExTU2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsgImhlbGxvIiB9IH0KKyAgICB9LCBI
VFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOworICAgIAorICAgIGF1dG8gW3dlYlZpZXcsIGRl
bGVnYXRlXSA9IHdlYlZpZXdXaXRoTmF2aWdhdGlvbkRlbGVnYXRlKCk7CisgICAgYXV0byBvYnNl
cnZlciA9IGFkb3B0TlMoW1RMU09ic2VydmVyIG5ld10pOworICAgIFt3ZWJWaWV3IGFkZE9ic2Vy
dmVyOm9ic2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJfbmVnb3RpYXRlZExlZ2FjeVRMUyIgb3B0
aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6bmlsXTsKKworICAgIFt3
ZWJWaWV3IGxvYWRSZXF1ZXN0OmxlZ2FjeVRMU1NlcnZlci5yZXF1ZXN0KCldOworICAgIEVYUEVD
VF9GQUxTRShbd2ViVmlldyBfbmVnb3RpYXRlZExlZ2FjeVRMU10pOworICAgIFtkZWxlZ2F0ZSB3
YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgX25l
Z290aWF0ZWRMZWdhY3lUTFNdKTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0Om1vZGVyblRM
U1NlcnZlci5yZXF1ZXN0KCldOworICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdh
dGlvbl07CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IF9uZWdvdGlhdGVkTGVnYWN5VExTXSk7
CisKKyAgICBbd2ViVmlldyBnb0JhY2tdOworICAgIFtvYnNlcnZlciB3YWl0VW50aWxOZWdvdGlh
dGVkTGVnYWN5VExTQ2hhbmdlZF07CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgX25lZ290aWF0
ZWRMZWdhY3lUTFNdKTsKKworICAgIFt3ZWJWaWV3IHJlbW92ZU9ic2VydmVyOm9ic2VydmVyLmdl
dCgpIGZvcktleVBhdGg6QCJfbmVnb3RpYXRlZExlZ2FjeVRMUyJdOworfQorCitURVNUKFRMU1Zl
cnNpb24sIFN1YnJlc291cmNlKQoreworICAgIEhUVFBTZXJ2ZXIgbGVnYWN5VExTU2VydmVyKHsK
KyAgICAgICAgeyAiLyIsIHsgImhlbGxvIiB9IH0KKyAgICB9LCBIVFRQU2VydmVyOjpQcm90b2Nv
bDo6SHR0cHNXaXRoTGVnYWN5VExTKTsKKworICAgIEhUVFBTZXJ2ZXIgbW9kZXJuVExTU2VydmVy
KHsKKyAgICAgICAgeyAiLyIsIHsgbWFrZVN0cmluZygiPHNjcmlwdD5mZXRjaCgnaHR0cHM6Ly8x
MjcuMC4wLjE6Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlZ2FjeVRMU1NlcnZlci5wb3J0KCkp
LCAiLycse21vZGU6J25vLWNvcnMnfSk8L3NjcmlwdD4iKSB9IH0KKyAgICB9LCBIVFRQU2VydmVy
OjpQcm90b2NvbDo6SHR0cHMpOworICAgIAorICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9
IHdlYlZpZXdXaXRoTmF2aWdhdGlvbkRlbGVnYXRlKCk7CisgICAgYXV0byBvYnNlcnZlciA9IGFk
b3B0TlMoW1RMU09ic2VydmVyIG5ld10pOworICAgIFt3ZWJWaWV3IGFkZE9ic2VydmVyOm9ic2Vy
dmVyLmdldCgpIGZvcktleVBhdGg6QCJfbmVnb3RpYXRlZExlZ2FjeVRMUyIgb3B0aW9uczpOU0tl
eVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6bmlsXTsKKworICAgIEVYUEVDVF9GQUxT
RShbd2ViVmlldyBfbmVnb3RpYXRlZExlZ2FjeVRMU10pOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0Om1vZGVyblRMU1NlcnZlci5yZXF1ZXN0KCldOworICAgIHdoaWxlICghW3dlYlZpZXcgX25l
Z290aWF0ZWRMZWdhY3lUTFNdKQorICAgICAgICBbb2JzZXJ2ZXIgd2FpdFVudGlsTmVnb3RpYXRl
ZExlZ2FjeVRMU0NoYW5nZWRdOworCisgICAgW3dlYlZpZXcgcmVtb3ZlT2JzZXJ2ZXI6b2JzZXJ2
ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAIl9uZWdvdGlhdGVkTGVnYWN5VExTIl07Cit9CisKKyNlbmRp
ZiAvLyBIQVZFKE5FVFdPUktfRlJBTUVXT1JLKQogCiAvLyBGSVhNRTogQWRkIHNvbWUgdGVzdHMg
Zm9yIFdLV2ViVmlldy5oYXNPbmx5U2VjdXJlQ29udGVudAogCkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0
QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaAkocmV2aXNpb24gMjU1NTgwKQorKysgVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDgg
QEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogY2xhc3MgSFRUUFNlcnZlciB7CiBwdWJsaWM6
CiAgICAgc3RydWN0IEhUVFBSZXNwb25zZTsKLSAgICBIVFRQU2VydmVyKHN0ZDo6aW5pdGlhbGl6
ZXJfbGlzdDxzdGQ6OnBhaXI8U3RyaW5nLCBIVFRQUmVzcG9uc2U+Pik7CisgICAgZW51bSBjbGFz
cyBQcm90b2NvbCA6IHVpbnQ4X3QgeyBIdHRwLCBIdHRwcywgSHR0cHNXaXRoTGVnYWN5VExTIH07
CisgICAgSFRUUFNlcnZlcihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPFN0cmluZywg
SFRUUFJlc3BvbnNlPj4sIFByb3RvY29sID0gUHJvdG9jb2w6Okh0dHApOwogICAgIHVpbnQxNl90
IHBvcnQoKSBjb25zdDsKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QoKSBjb25zdDsKICAgICAK
QEAgLTQ2LDYgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc3BvbmRUb1JlcXVlc3RzKG53
X2Nvbm5lY3Rpb25fdCk7CiAgICAgCiAgICAgUmV0YWluUHRyPG53X2xpc3RlbmVyX3Q+IG1fbGlz
dGVuZXI7CisgICAgY29uc3QgUHJvdG9jb2wgbV9wcm90b2NvbDsKICAgICBjb25zdCBIYXNoTWFw
PFN0cmluZywgSFRUUFJlc3BvbnNlPiBtX3JlcXVlc3RSZXNwb25zZU1hcDsKIH07CiAKQEAgLTc0
LDMgKzc2LDUgQEAgc3RydWN0IEhUVFBTZXJ2ZXI6OkhUVFBSZXNwb25zZSB7CiB9IC8vIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJCiAKICNlbmRpZiAvLyBIQVZFKE5FVFdPUktfRlJBTUVXT1JLKQor
CitSZXRhaW5QdHI8U2VjSWRlbnRpdHlSZWY+IHRlc3RJZGVudGl0eSgpOwpJbmRleDogVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQkocmV2aXNpb24gMjU1NTgwKQorKysgVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0z
MywxNSArMzMsMjMgQEAKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi1IVFRQU2VydmVy
OjpIVFRQU2VydmVyKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8U3RyaW5nLCBIVFRQ
UmVzcG9uc2U+PiByZXNwb25zZXMpCi0gICAgOiBtX3JlcXVlc3RSZXNwb25zZU1hcChbXShzdGQ6
OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPFN0cmluZywgSFRUUFNlcnZlcjo6SFRUUFJlc3Bv
bnNlPj4gbGlzdCkgeworSFRUUFNlcnZlcjo6SFRUUFNlcnZlcihzdGQ6OmluaXRpYWxpemVyX2xp
c3Q8c3RkOjpwYWlyPFN0cmluZywgSFRUUFJlc3BvbnNlPj4gcmVzcG9uc2VzLCBQcm90b2NvbCBw
cm90b2NvbCkKKyAgICA6IG1fcHJvdG9jb2wocHJvdG9jb2wpCisgICAgLCBtX3JlcXVlc3RSZXNw
b25zZU1hcChbXShzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPFN0cmluZywgSFRUUFNl
cnZlcjo6SFRUUFJlc3BvbnNlPj4gbGlzdCkgewogICAgICAgICBIYXNoTWFwPFN0cmluZywgSFRU
UFNlcnZlcjo6SFRUUFJlc3BvbnNlPiBtYXA7CiAgICAgICAgIGZvciAoYXV0byYgcGFpciA6IGxp
c3QpCiAgICAgICAgICAgICBtYXAuYWRkKHBhaXIuZmlyc3QsIHBhaXIuc2Vjb25kKTsKICAgICAg
ICAgcmV0dXJuIG1hcDsKICAgICB9KHJlc3BvbnNlcykpCiB7Ci0gICAgYXV0byBwYXJhbWV0ZXJz
ID0gYWRvcHROUyhud19wYXJhbWV0ZXJzX2NyZWF0ZV9zZWN1cmVfdGNwKE5XX1BBUkFNRVRFUlNf
RElTQUJMRV9QUk9UT0NPTCwgTldfUEFSQU1FVEVSU19ERUZBVUxUX0NPTkZJR1VSQVRJT04pKTsK
KyAgICBhdXRvIGNvbmZpZ3VyZVRMUyA9IHByb3RvY29sID09IFByb3RvY29sOjpIdHRwID8gTldf
UEFSQU1FVEVSU19ESVNBQkxFX1BST1RPQ09MIDogXihud19wcm90b2NvbF9vcHRpb25zX3QgcHJv
dG9jb2xPcHRpb25zKSB7CisgICAgICAgIGF1dG8gb3B0aW9ucyA9IGFkb3B0TlMobndfdGxzX2Nv
cHlfc2VjX3Byb3RvY29sX29wdGlvbnMocHJvdG9jb2xPcHRpb25zKSk7CisgICAgICAgIGF1dG8g
aWRlbnRpdHkgPSBhZG9wdE5TKHNlY19pZGVudGl0eV9jcmVhdGUodGVzdElkZW50aXR5KCkuZ2V0
KCkpKTsKKyAgICAgICAgc2VjX3Byb3RvY29sX29wdGlvbnNfc2V0X2xvY2FsX2lkZW50aXR5KG9w
dGlvbnMuZ2V0KCksIGlkZW50aXR5LmdldCgpKTsKKyAgICAgICAgaWYgKHByb3RvY29sID09IFBy
b3RvY29sOjpIdHRwc1dpdGhMZWdhY3lUTFMpCisgICAgICAgICAgICBzZWNfcHJvdG9jb2xfb3B0
aW9uc19zZXRfbWF4X3Rsc19wcm90b2NvbF92ZXJzaW9uKG9wdGlvbnMuZ2V0KCksIHRsc19wcm90
b2NvbF92ZXJzaW9uX1RMU3YxMCk7CisgICAgfTsKKyAgICBhdXRvIHBhcmFtZXRlcnMgPSBhZG9w
dE5TKG53X3BhcmFtZXRlcnNfY3JlYXRlX3NlY3VyZV90Y3AoY29uZmlndXJlVExTLCBOV19QQVJB
TUVURVJTX0RFRkFVTFRfQ09ORklHVVJBVElPTikpOwogICAgIG1fbGlzdGVuZXIgPSBhZG9wdE5T
KG53X2xpc3RlbmVyX2NyZWF0ZShwYXJhbWV0ZXJzLmdldCgpKSk7CiAgICAgbndfbGlzdGVuZXJf
c2V0X3F1ZXVlKG1fbGlzdGVuZXIuZ2V0KCksIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOwog
ICAgIG53X2xpc3RlbmVyX3NldF9uZXdfY29ubmVjdGlvbl9oYW5kbGVyKG1fbGlzdGVuZXIuZ2V0
KCksIF4obndfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24pIHsKQEAgLTEyNyw3ICsxMzUsMTUgQEAg
dWludDE2X3QgSFRUUFNlcnZlcjo6cG9ydCgpIGNvbnN0CiAKIE5TVVJMUmVxdWVzdCAqSFRUUFNl
cnZlcjo6cmVxdWVzdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFtOU1VSTFJlcXVlc3QgcmVxdWVz
dFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
QCJodHRwOi8vMTI3LjAuMC4xOiVkLyIsIHBvcnQoKV1dXTsKKyAgICBOU1N0cmluZyAqZm9ybWF0
OworICAgIHN3aXRjaCAobV9wcm90b2NvbCkgeworICAgIGNhc2UgUHJvdG9jb2w6Okh0dHA6Cisg
ICAgICAgIGZvcm1hdCA9IEAiaHR0cDovLzEyNy4wLjAuMTolZC8iOworICAgIGNhc2UgUHJvdG9j
b2w6Okh0dHBzOgorICAgIGNhc2UgUHJvdG9jb2w6Okh0dHBzV2l0aExlZ2FjeVRMUzoKKyAgICAg
ICAgZm9ybWF0ID0gQCJodHRwczovLzEyNy4wLjAuMTolZC8iOworICAgIH0KKyAgICByZXR1cm4g
W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpmb3JtYXQsIHBvcnQoKV1dXTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389688</attachid>
            <date>2020-02-04 12:00:53 -0800</date>
            <delta_ts>2020-02-04 12:43:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207207-20200204120052.patch</filename>
            <type>text/plain</type>
            <size>55079</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDIwLTAyLTA0ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRml4IHJhY2Ug
Y29uZGl0aW9uIGZvciBXS1dlYlZpZXcuX25lZ290aWF0ZWRMZWdhY3lUTFMgd2hlbiBsb2FkaW5n
IG1haW4gcmVzb3VvcmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDcyMDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmluY2x1ZGVDZXJ0aWZpY2F0ZUlu
Zm8gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJh
c2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjp1c2VkTGVnYWN5
VExTIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmRlY29k
ZSk6CisKIDIwMjAtMDItMDMgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIERvIG5vdCBjb3B5IGZlYXR1cmUgcG9saWN5IGluIGlzRmVhdHVyZVBvbGljeUFsbG93
ZWRCeURvY3VtZW50QW5kQWxsT3duZXJzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAkocmV2aXNpb24g
MjU1NTgwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3Bv
bnNlQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MSwxMSArMjYxLDEyIEBAIHZvaWQgUmVz
b3VyY2VSZXNwb25zZUJhc2U6OnNldFR5cGUoVHlwZSAKICAgICBtX3R5cGUgPSB0eXBlOwogfQog
Ci12b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjppbmNsdWRlQ2VydGlmaWNhdGVJbmZvKCkgY29u
c3QKK3ZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8oVXNl
ZExlZ2FjeVRMUyB1c2VkTGVnYWN5VExTKSBjb25zdAogewogICAgIGlmIChtX2NlcnRpZmljYXRl
SW5mbykKICAgICAgICAgcmV0dXJuOwogICAgIG1fY2VydGlmaWNhdGVJbmZvID0gc3RhdGljX2Nh
c3Q8Y29uc3QgUmVzb3VyY2VSZXNwb25zZSo+KHRoaXMpLT5wbGF0Zm9ybUNlcnRpZmljYXRlSW5m
bygpOworICAgIG1fdXNlZExlZ2FjeVRMUyA9IHVzZWRMZWdhY3lUTFM7CiB9CiAKIFN0cmluZyBS
ZXNvdXJjZVJlc3BvbnNlQmFzZTo6c3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25z
ZUJhc2UuaAkocmV2aXNpb24gMjU1NTgwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw4
IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiAKIGJvb2wgaXNTY3JpcHRBbGxvd2VkQnlOb3Nu
aWZmKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIAorZW51bSBjbGFzcyBVc2VkTGVnYWN5VExT
IDogYm9vbCB7IE5vLCBZZXMgfTsKKwogLy8gRG8gbm90IHVzZSB0aGlzIGNsYXNzIGRpcmVjdGx5
LCB1c2UgdGhlIGNsYXNzIFJlc291cmNlUmVzcG9uc2UgaW5zdGVhZAogY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZUJhc2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMTI3LDggKzEy
OSw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5h
bWUoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIHNhbml0aXplU3Vn
Z2VzdGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8oKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8oVXNlZExlZ2FjeVRMUyA9IFVzZWRMZWdhY3lUTFM6Ok5v
KSBjb25zdDsKICAgICBjb25zdCBPcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+JiBjZXJ0aWZpY2F0
ZUluZm8oKSBjb25zdCB7IHJldHVybiBtX2NlcnRpZmljYXRlSW5mbzsgfTsKKyAgICBib29sIHVz
ZWRMZWdhY3lUTFMoKSBjb25zdCB7IHJldHVybiBtX3VzZWRMZWdhY3lUTFMgPT0gVXNlZExlZ2Fj
eVRMUzo6WWVzOyB9CiAgICAgCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIHJldHVybiBwYXJzZWQg
dmFsdWVzIG9mIHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlIGhlYWRlcnMuCiAgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBjYWNoZUNvbnRyb2xDb250YWluc05vQ2FjaGUoKSBjb25zdDsKQEAgLTI0
Niw3ICsyNDksOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1JhbmdlUmVxdWVzdGVkIHsgZmFs
c2UgfTsKIAogcHJvdGVjdGVkOgotICAgIGludCBtX2h0dHBTdGF0dXNDb2RlIHsgMCB9OworICAg
IHNob3J0IG1faHR0cFN0YXR1c0NvZGUgeyAwIH07CisgICAgbXV0YWJsZSBVc2VkTGVnYWN5VExT
IG1fdXNlZExlZ2FjeVRMUyB7IFVzZWRMZWdhY3lUTFM6Ok5vIH07CiB9OwogCiBpbmxpbmUgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGEsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIGIpIHsgcmV0dXJuIFJlc291cmNlUmVzcG9uc2VCYXNlOjpjb21wYXJlKGEsIGIpOyB9
CkBAIC0yNzMsMTIgKzI3NywxMyBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjplbmNvZGUo
RW5jb2RlCiAgICAgaWYgKEVuY29kZXI6OmlzSVBDRW5jb2RlcikKICAgICAgICAgZW5jb2RlciA8
PCBtX25ldHdvcmtMb2FkTWV0cmljczsKIAotICAgIGVuY29kZXIgPDwgbV9odHRwU3RhdHVzQ29k
ZTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGludD4obV9odHRwU3RhdHVzQ29kZSk7CiAg
ICAgZW5jb2RlciA8PCBtX2NlcnRpZmljYXRlSW5mbzsKICAgICBlbmNvZGVyLmVuY29kZUVudW0o
bV9zb3VyY2UpOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShtX3R5cGUpOwogICAgIGVuY29kZXIu
ZW5jb2RlRW51bShtX3RhaW50aW5nKTsKLSAgICBlbmNvZGVyIDw8IG1faXNSZWRpcmVjdGVkOwor
ICAgIHVpbnQ4X3QgaXNSZWRpcmVjdGVkQW5kVXNlZExlZ2FjeVRMUyA9IChtX2lzUmVkaXJlY3Rl
ZCA/IDB4MSA6IDB4MCkgfCAobV91c2VkTGVnYWN5VExTID09IFVzZWRMZWdhY3lUTFM6OlllcyA/
IDB4MiA6IDB4MCk7CisgICAgZW5jb2RlciA8PCBpc1JlZGlyZWN0ZWRBbmRVc2VkTGVnYWN5VExT
OwogICAgIGVuY29kZXIgPDwgbV9pc1JhbmdlUmVxdWVzdGVkOwogfQogCkBAIC0zMTMsOCArMzE4
LDEwIEBAIGJvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmRlY29kZShEZWNvZGUKICAgICAvLyBU
aGUgbmV0d29ya0xvYWRNZXRyaWNzIGluZm8gaXMgb25seSBzZW5kIG92ZXIgSVBDIGFuZCBub3Qg
c3RvcmVkIGluIGRpc2sgY2FjaGUuCiAgICAgaWYgKERlY29kZXI6OmlzSVBDRGVjb2RlciAmJiAh
ZGVjb2Rlci5kZWNvZGUocmVzcG9uc2UubV9uZXR3b3JrTG9hZE1ldHJpY3MpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNwb25zZS5tX2h0dHBTdGF0
dXNDb2RlKSkKKyAgICBpbnQgaHR0cFN0YXR1c0NvZGU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShodHRwU3RhdHVzQ29kZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXNwb25zZS5t
X2h0dHBTdGF0dXNDb2RlID0gaHR0cFN0YXR1c0NvZGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXNwb25zZS5tX2NlcnRpZmljYXRlSW5mbykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShyZXNwb25zZS5tX3NvdXJjZSkpCkBAIC0zMjMsMTAg
KzMzMCwxMSBAQCBib29sIFJlc291cmNlUmVzcG9uc2VCYXNlOjpkZWNvZGUoRGVjb2RlCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShyZXNwb25zZS5t
X3RhaW50aW5nKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGJvb2wgaXNSZWRpcmVjdGVk
ID0gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShpc1JlZGlyZWN0ZWQpKQorICAgIHVp
bnQ4X3QgaXNSZWRpcmVjdGVkQW5kVXNlZExlZ2FjeVRMUyA9IDA7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShpc1JlZGlyZWN0ZWRBbmRVc2VkTGVnYWN5VExTKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIHJlc3BvbnNlLm1faXNSZWRpcmVjdGVkID0gaXNSZWRpcmVjdGVkOworICAgIHJl
c3BvbnNlLm1faXNSZWRpcmVjdGVkID0gaXNSZWRpcmVjdGVkQW5kVXNlZExlZ2FjeVRMUyAmIDB4
MTsKKyAgICByZXNwb25zZS5tX3VzZWRMZWdhY3lUTFMgPSAoaXNSZWRpcmVjdGVkQW5kVXNlZExl
Z2FjeVRMUyAmIDB4MikgPyBVc2VkTGVnYWN5VExTOjpZZXMgOiBVc2VkTGVnYWN5VExTOjpObzsK
IAogICAgIGJvb2wgaXNSYW5nZVJlcXVlc3RlZCA9IGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoaXNSYW5nZVJlcXVlc3RlZCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjU1NTgwKQor
KysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw3MCBA
QAorMjAyMC0wMi0wNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIEZpeCByYWNlIGNvbmRpdGlvbiBmb3IgV0tXZWJWaWV3Ll9uZWdvdGlhdGVk
TGVnYWN5VExTIHdoZW4gbG9hZGluZyBtYWluIHJlc291b3JjZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3MjA3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gUGFnZUxvYWRTdGF0ZTo6ZGlkQ29tbWl0
TG9hZCwgSSB3YXMgcmVzZXR0aW5nIHRoZSB2YWx1ZSBvZiBfbmVnb3RpYXRlZExlZ2FjeVRMUyB0
byBmYWxzZS4KKyAgICAgICAgVGhhdCBjcmVhdGVkIGEgcmFjZSBjb25kaXRpb24gd2hlbiBsb2Fk
aW5nIHRoZSBtYWluIHJlc291cmNlIGJlY2F1c2UgdGhlIE5ldHdvcmtQcm9jZXNzIHdvdWxkCisg
ICAgICAgIG1lc3NhZ2UgdGhlIFVJUHJvY2VzcyBzZXR0aW5nIF9uZWdvdGlhdGVkTGVnYWN5VExT
IHRvIGZhbHNlLCB3aGlsZSB0aGUgTmV0d29ya1Byb2Nlc3Mgd291bGQKKyAgICAgICAgbWVzc2Fn
ZSB0aGUgV2ViUHJvY2VzcyB3aGljaCB3b3VsZCBtZXNzYWdlIHRoZSBVSVByb2Nlc3MgdG8gY2Fs
bCBQYWdlTG9hZFN0YXRlOjpkaWRDb21taXRMb2FkCisgICAgICAgIHdoaWNoIHdvdWxkIHJlc2V0
IGl0IHRvIGZhbHNlLiAgTm93IGl0IHJlc2V0cyBpdCB0byB0aGUgY29ycmVjdCB2YWx1ZSwgd2hh
dGV2ZXIgaXQgaXMuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gbWFpbnRhaW4gYmluYXJ5IGNvbXBh
dGliaWxpdHkgd2l0aCBleGlzdGluZyBkaXNrIGNhY2hlcywgSSBidW5kbGUgdHdvIGJvb2xlYW5z
IHRvZ2V0aGVyCisgICAgICAgIHdoZW4gZW5jb2RpbmcuICBUaGlzIHJlc3VsdHMgaW4gZXhpc3Rp
bmcgZGlzayBjYWNoZXMgc2F5aW5nIHRoZXkgbG9hZGVkIG5vdGhpbmcgb3ZlciBsZWdhY3kgVExT
LAorICAgICAgICB3aGljaCBpcyBzb21ld2hhdCBjb3JyZWN0IGJlY2F1c2UgVExTIDEuMCBhbmQg
MS4xIHdlcmUgbm90IGRlcHJlY2F0ZWQgd2hlbiB0aGUgcmVzb3VyY2VzIHdlcmUgZmV0Y2hlZC4K
KyAgICAgICAgR29pbmcgZm9yd2FyZCwgdGhlIGJpdCB3aWxsIGJlIHNldCBhbmQgdGhlIGRpc2sg
Y2FjaGUgZW50cmllcyB3aWxsIHN0b3JlIHdoZXRoZXIgdGhleSB3ZXJlIGxvYWRlZAorICAgICAg
ICBvdmVyIGxlZ2FjeSBUTFMuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gbm90IGluY3JlYXNlIHRo
ZSBtZW1vcnkgZm9vdHByaW50IG9mIFJlc291cmNlUmVzcG9uc2UsIEkgY2hhbmdlZCBtX2h0dHBT
dGF0dXNDb2RlIGZyb20KKyAgICAgICAgYW4gaW50IHRvIGEgc2hvcnQuICBJdCBqdXN0IG5lZWRz
IHRvIGJlIGFibGUgdG8gY292ZXIgdGhlIHZhbHVlcyAwLTYwMCBvciBzbywgd2hpY2ggcmVhbGx5
IG9ubHkgbmVlZHMgMTAgYml0cy4KKworICAgICAgICBDb3ZlcmVkIGJ5IG5ldyBBUEkgdGVzdHMu
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJl
Y2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVm
bGlnaHRDaGVja2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNr
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6Om5lZ290aWF0ZWRMZWdhY3lU
TFMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFzay5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDbGllbnQ6Om5lZ290aWF0
ZWRMZWdhY3lUTFMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtEYXRhVGFza0Jsb2IuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tC
bG9iOjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6Om5vdGlmeURpZFJl
Y2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjp0aHJvdHRsZURl
bGF5Q29tcGxldGVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6Om5lZ290aWF0ZWRM
ZWdhY3lUTFMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQaW5nTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9QaW5nTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtE
YXRhVGFza0NvY29hLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjpk
aWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBV
UkxTZXNzaW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVSZXNwb25zZTpjb21wbGV0aW9uSGFuZGxlcjpd
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDdXJsOjppbnZva2VEaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNr
U291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmRpc3BhdGNo
RGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VMb2FkU3RhdGU6OmRpZENvbW1pdExvYWQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1By
b3Zpc2lvbmFsUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdl
UHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1Byb3Zp
c2lvbmFsUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKToKKwogMjAyMC0wMi0wMyAgU2Ft
IFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgU3RhcnQgc3BsaXR0aW5nIHBs
YXRmb3JtIHNwZWNpZmljIG92ZXJyaWRlcyBvZiBkZWZhdWx0IGVuYWJsZSBiZWhhdmlvciBpbnRv
IHRoZWlyIG93biBmaWxlcwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAkocmV2aXNpb24g
MjU1NTgwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZs
aWdodENoZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBO
ZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJlYwogICAgIG1fbmV0d29ya1Byb2Nlc3Mt
PmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShtX3BhcmFtZXRlcnMuc2Vzc2lvbklELCBtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIG1f
cGFyYW1ldGVycy50b3BPcmlnaW4gPyAmbV9wYXJhbWV0ZXJzLnRvcE9yaWdpbi0+ZGF0YSgpIDog
bnVsbHB0ciwgY2hhbGxlbmdlLCBuZWdvdGlhdGVkTGVnYWN5VExTLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNw
b25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtD
T1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiByZXNwb25zZSwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0
aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZSIpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgJ
KHJldmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0NPUlNQcmVmbGlnaHRDaGVja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJl
ZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hh
bGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdh
Y3lUTFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21w
bGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVy
cm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFs
Qnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwpJbmRl
eDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNw
cAkocmV2aXNpb24gMjU1NTgwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrRGF0YVRhc2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgTmV0
d29ya0RhdGFUYXNrOjpzY2hlZHVsZUZhaWx1cmUoRmEKICAgICBtX2ZhaWx1cmVUaW1lci5zdGFy
dE9uZVNob3QoMF9zKTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVSZXNw
b25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZl
UmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVkTGVnYWN5VExT
IG5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBpZiAocmVzcG9uc2UuaXNIVFRQMDkoKSkgewogICAgICAgICBh
dXRvIHVybCA9IHJlc3BvbnNlLnVybCgpOwpAQCAtMTExLDE3ICsxMTEsMTEgQEAgdm9pZCBOZXR3
b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZQogICAgICAgICB9CiAgICAgfQogICAgIGlm
IChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3Zl
KHJlc3BvbnNlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBtX2NsaWVu
dC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBuZWdvdGlhdGVkTGVnYWN5
VExTLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgZWxzZQogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Rh
dGFUYXNrOjpuZWdvdGlhdGVkTGVnYWN5VExTKCkgY29uc3QKLXsKLSAgICBpZiAobV9jbGllbnQp
Ci0gICAgICAgIG1fY2xpZW50LT5uZWdvdGlhdGVkTGVnYWN5VExTKCk7Ci19Ci0KIGJvb2wgTmV0
d29ya0RhdGFUYXNrOjpzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSBjb25z
dAogewogICAgIHJldHVybiBtX2NsaWVudCA/IG1fY2xpZW50LT5zaG91bGRDYXB0dXJlRXh0cmFO
ZXR3b3JrTG9hZE1ldHJpY3MoKSA6IGZhbHNlOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCShyZXZpc2lvbiAyNTU1ODApCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCSh3b3JraW5nIGNvcHkp
CkBAIC02Miw3ICs2Miw3IEBAIGNsYXNzIE5ldHdvcmtEYXRhVGFza0NsaWVudCB7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29t
cGxldGlvbkhhbmRsZXImJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2hhbGxl
bmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lU
TFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VD
b21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJl
c3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBj
b25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVz
RXhwZWN0ZWRUb1NlbmQpID0gMDsKQEAgLTcwLDcgKzcwLDYgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBjYW5ub3RTaG93VVJMKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3YXNCbG9ja2Vk
QnlSZXN0cmljdGlvbnMoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbmVnb3RpYXRlZExlZ2Fj
eVRMUygpIGNvbnN0IHsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3
b3JrTG9hZE1ldHJpY3MoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdm9pZCBkaWRD
b21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKQEAg
LTkyLDggKzkxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXN1bWUoKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVBbmRDYW5jZWwoKSA9IDA7CiAKLSAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXImJik7Ci0gICAgdm9pZCBuZWdvdGlhdGVkTGVnYWN5VExTKCkgY29uc3Q7
CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpOwogICAg
IGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkgY29uc3Q7CiAKICAg
ICBlbnVtIGNsYXNzIFN0YXRlIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAkocmV2aXNpb24gMjU1NTgwKQorKysg
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjkwLDcgKzI5MCw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6
ZGlzcGF0Y2hEaWRSZWMKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgZGlkUmVjZWl2ZVJl
c3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUo
cHJvdGVjdGVkVGhpcyksIGVycm9yQ29kZV0oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgewor
ICAgIGRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgTmVnb3RpYXRlZExlZ2Fj
eVRMUzo6Tm8sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwg
ZXJyb3JDb2RlXShQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKSB7CiAgICAgICAgIExPRyhOZXR3
b3JrU2Vzc2lvbiwgIiVwIC0gTmV0d29ya0RhdGFUYXNrQmxvYjo6ZGlkUmVjZWl2ZVJlc3BvbnNl
IGNvbXBsZXRpb25IYW5kbGVyICgldSkiLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocG9s
aWN5QWN0aW9uKSk7CiAKICAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNhbmNlbGluZyB8
fCBtX3N0YXRlID09IFN0YXRlOjpDb21wbGV0ZWQpIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCShyZXZpc2lvbiAyNTU1ODApCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjA2LDEyICsyMDYsNyBAQCB2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdl
KEF1CiAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShtX3Rhc2stPnNlc3Npb25JRCgpLCBtX3Bh
cmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIG1fcGFyYW1ldGVycy50b3BPcmlnaW4gPyAmbV9wYXJh
bWV0ZXJzLnRvcE9yaWdpbi0+ZGF0YSgpIDogbnVsbHB0ciwgY2hhbGxlbmdlLCBuZWdvdGlhdGVk
TGVnYWN5VExTLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29y
a0xvYWQ6Om5lZ290aWF0ZWRMZWdhY3lUTFMoKSBjb25zdAotewotICAgIG1fbmV0d29ya1Byb2Nl
c3MtPmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLm5lZ290aWF0ZWRMZWdhY3lUTFMobV9wYXJhbWV0
ZXJzLndlYlBhZ2VQcm94eUlEKTsKLX0KLQotdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFu
ZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgTmVnb3RpYXRlZExlZ2FjeVRMUyBu
ZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBBU1NFUlQo
IW1fdGhyb3R0bGUpOwpAQCAtMjI2LDE2ICsyMjEsMTkgQEAgdm9pZCBOZXR3b3JrTG9hZDo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKFJlcwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbm90aWZ5
RGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CisgICAgaWYgKG5lZ290aWF0ZWRMZWdhY3lUTFMgPT0gTmVnb3RpYXRlZExlZ2Fj
eVRMUzo6WWVzKQorICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5hdXRoZW50aWNhdGlvbk1hbmFn
ZXIoKS5uZWdvdGlhdGVkTGVnYWN5VExTKG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCk7Cisg
ICAgCisgICAgbm90aWZ5RGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBuZWdv
dGlhdGVkTGVnYWN5VExTLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQg
TmV0d29ya0xvYWQ6Om5vdGlmeURpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYg
cmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgTmV0d29ya0xvYWQ6Om5vdGlmeURpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0ZWRMZWdhY3lUTFMgbmVnb3RpYXRlZExlZ2FjeVRMUywg
UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICByZXNwb25zZS5zZXRTb3VyY2UoUmVzb3Vy
Y2VSZXNwb25zZTo6U291cmNlOjpOZXR3b3JrKTsKICAgICBpZiAobV9wYXJhbWV0ZXJzLm5lZWRz
Q2VydGlmaWNhdGVJbmZvKQotICAgICAgICByZXNwb25zZS5pbmNsdWRlQ2VydGlmaWNhdGVJbmZv
KCk7CisgICAgICAgIHJlc3BvbnNlLmluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8obmVnb3RpYXRlZExl
Z2FjeVRMUyA9PSBOZWdvdGlhdGVkTGVnYWN5VExTOjpZZXMgPyBVc2VkTGVnYWN5VExTOjpZZXMg
OiBVc2VkTGVnYWN5VExTOjpObyk7CiAKICAgICBtX2NsaWVudC5nZXQoKS5kaWRSZWNlaXZlUmVz
cG9uc2UoV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0K
QEAgLTI2NSw3ICsyNjMsNyBAQCB2b2lkIE5ldHdvcmtMb2FkOjp0aHJvdHRsZURlbGF5Q29tcGxl
dGVkCiAKICAgICBhdXRvIHRocm90dGxlID0gV1RGTW92ZShtX3Rocm90dGxlKTsKIAotICAgIG5v
dGlmeURpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHRocm90dGxlLT5yZXNwb25zZSksIFdURk1v
dmUodGhyb3R0bGUtPnJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBub3RpZnlEaWRS
ZWNlaXZlUmVzcG9uc2UoV1RGTW92ZSh0aHJvdHRsZS0+cmVzcG9uc2UpLCBOZWdvdGlhdGVkTGVn
YWN5VExTOjpObywgV1RGTW92ZSh0aHJvdHRsZS0+cmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcikp
OwogfQogCiB2b2lkIE5ldHdvcmtMb2FkOjpkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVz
U2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKQpJbmRleDogU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAkocmV2aXNpb24gMjU1NTgwKQorKysg
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCSh3b3JraW5nIGNvcHkp
CkBAIC03NCwxNiArNzQsMTUgQEAgcHJpdmF0ZToKICAgICAvLyBOZXR3b3JrRGF0YVRhc2tDbGll
bnQKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlv
bkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5n
ZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYm
KSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIm
JikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBm
aW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50
NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwogICAgIHZvaWQgd2FzQmxvY2tl
ZCgpIGZpbmFsOwogICAgIHZvaWQgY2Fubm90U2hvd1VSTCgpIGZpbmFsOwogICAgIHZvaWQgd2Fz
QmxvY2tlZEJ5UmVzdHJpY3Rpb25zKCkgZmluYWw7Ci0gICAgdm9pZCBuZWdvdGlhdGVkTGVnYWN5
VExTKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIG5vdGlmeURpZFJlY2VpdmVSZXNwb25zZShX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJik7
CisgICAgdm9pZCBub3RpZnlEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYp
OwogICAgIHZvaWQgdGhyb3R0bGVEZWxheUNvbXBsZXRlZCgpOwogCiAgICAgc3RkOjpyZWZlcmVu
Y2Vfd3JhcHBlcjxOZXR3b3JrTG9hZENsaWVudD4gbV9jbGllbnQ7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHJl
dmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDggQEAgY2xhc3MgTmV0
d29ya0xvYWRDaGVja2VyOwogY2xhc3MgU2VydmljZVdvcmtlckZldGNoVGFzazsKIGNsYXNzIFdl
YlNXU2VydmVyQ29ubmVjdGlvbjsKIAorZW51bSBjbGFzcyBOZWdvdGlhdGVkTGVnYWN5VExTIDog
Ym9vbDsKKwogc3RydWN0IFJlc291cmNlTG9hZEluZm87CiAKIG5hbWVzcGFjZSBOZXR3b3JrQ2Fj
aGUgewpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAJKHJl
dmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjAsNyArMTYwLDcgQEAgdm9pZCBQaW5nTG9hZDo6ZGlk
UmVjZWl2ZUNoYWxsZW5nZShBdXRoZQogICAgIGRpZEZpbmlzaChSZXNvdXJjZUVycm9yIHsgU3Ry
aW5nKCksIDAsIGN1cnJlbnRVUkwoKSwgIkZhaWxlZCBIVFRQIGF1dGhlbnRpY2F0aW9uIl9zLCBS
ZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9sIH0pOwogfQogCi12b2lkIFBpbmdMb2Fk
OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNwb25z
ZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFBpbmdMb2FkOjpk
aWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVk
TGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlIC0gaHR0
cFN0YXR1c0NvZGU6ICVkIiwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7CiAgICAgYXV0byB3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUGluZ0xvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1BpbmdMb2FkLmgJKHJldmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENv
bXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShX
ZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBD
aGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhh
bmRsZXImJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25I
YW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRy
aWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2Vu
dCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLmgJKHJldmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAkod29ya2luZyBjb3B5KQpAQCAtNTQs
NyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5
dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVn
b3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJik7CiAgICAgdm9p
ZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29u
c3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5k
bGVyJiYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYm
KTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYp
OwogCiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRp
b25IYW5kbGVyJiYpOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCShyZXZpc2lvbiAyNTU1ODAp
CisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0Nv
Y29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNzMsMTAgKzM3MywxMCBAQCB2b2lkIE5ldHdvcmtE
YXRhVGFza0NvY29hOjpkaWRSZWNlaXZlRGF0CiAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZl
RGF0YShXVEZNb3ZlKGRhdGEpKTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgV2Vi
S2l0OjpSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVkTGVnYWN5VExTIG5lZ290aWF0ZWRMZWdh
Y3lUTFMsIFdlYktpdDo6UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIEVNSVRfU0lHTlBPU1QobV90YXNrLCAicmVjZWl2ZWQgcmVzcG9uc2UgaGVh
ZGVycyIpOwotICAgIE5ldHdvcmtEYXRhVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUo
cmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgTmV0d29ya0RhdGFU
YXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSksIG5lZ290aWF0ZWRMZWdh
Y3lUTFMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrRGF0
YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2Nv
YS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtTZXNzaW9uQ29jb2EubW0JKHJldmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQkod29ya2luZyBjb3B5
KQpAQCAtODE4LDI0ICs4MTgsMjIgQEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24g
KilzZXNzaQogICAgIGlmIChhdXRvKiBuZXR3b3JrRGF0YVRhc2sgPSBbc2VsZiBleGlzdGluZ1Rh
c2s6ZGF0YVRhc2tdKSB7CiAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAg
ICAgICAgYm9vbCBuZWdvdGlhdGVkTGVnYWN5VExTID0gZmFsc2U7CisgICAgICAgIE5lZ290aWF0
ZWRMZWdhY3lUTFMgbmVnb3RpYXRlZExlZ2FjeVRMUyA9IE5lZ290aWF0ZWRMZWdhY3lUTFM6Ok5v
OwogI2lmIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkKICAgICAgICAgTlNVUkxTZXNzaW9u
VGFza1RyYW5zYWN0aW9uTWV0cmljcyAqbWV0cmljcyA9IGRhdGFUYXNrLl9pbmNvbXBsZXRlVGFz
a01ldHJpY3MudHJhbnNhY3Rpb25NZXRyaWNzLmxhc3RPYmplY3Q7CiAgICAgICAgIGF1dG8gdGxz
VmVyc2lvbiA9ICh0bHNfcHJvdG9jb2xfdmVyc2lvbl90KW1ldHJpY3MubmVnb3RpYXRlZFRMU1By
b3RvY29sVmVyc2lvbi51bnNpZ25lZFNob3J0VmFsdWU7CiAgICAgICAgIGlmICh0bHNWZXJzaW9u
ID09IHRsc19wcm90b2NvbF92ZXJzaW9uX1RMU3YxMCB8fCB0bHNWZXJzaW9uID09IHRsc19wcm90
b2NvbF92ZXJzaW9uX1RMU3YxMSkKLSAgICAgICAgICAgIG5lZ290aWF0ZWRMZWdhY3lUTFMgPSB0
cnVlOworICAgICAgICAgICAgbmVnb3RpYXRlZExlZ2FjeVRMUyA9IE5lZ290aWF0ZWRMZWdhY3lU
TFM6OlllczsKICAgICAgICAgVU5VU0VEX1BBUkFNKG1ldHJpY3MpOwogI2Vsc2UgLy8gV2UgZG8g
bm90IG5lZWQgdG8gY2hlY2sgX1RMU05lZ290aWF0ZWRQcm90b2NvbFZlcnNpb24gaWYgd2UgaGF2
ZSBtZXRyaWNzLm5lZ290aWF0ZWRUTFNQcm90b2NvbFZlcnNpb24gYmVjYXVzZSBpdCB3b3JrcyBh
dCByZXNwb25zZSB0aW1lIGV2ZW4gYmVmb3JlIHJkYXI6Ly9wcm9ibGVtLzU2NTIyNjAxCiAgICAg
ICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgIGlmIChbZGF0
YVRhc2sgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfVExTTmVnb3RpYXRlZFByb3RvY29s
VmVyc2lvbildKSB7CiAgICAgICAgICAgICBTU0xQcm90b2NvbCB0bHNWZXJzaW9uID0gW2RhdGFU
YXNrIF9UTFNOZWdvdGlhdGVkUHJvdG9jb2xWZXJzaW9uXTsKICAgICAgICAgICAgIGlmICh0bHNW
ZXJzaW9uID09IGtUTFNQcm90b2NvbDExIHx8IHRsc1ZlcnNpb24gPT0ga1RMU1Byb3RvY29sMSkK
LSAgICAgICAgICAgICAgICBuZWdvdGlhdGVkTGVnYWN5VExTID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICBuZWdvdGlhdGVkTGVnYWN5VExTID0gTmVnb3RpYXRlZExlZ2FjeVRMUzo6WWVzOwogICAg
ICAgICB9CiAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogI2VuZGlm
Ci0gICAgICAgIGlmIChuZWdvdGlhdGVkTGVnYWN5VExTKQotICAgICAgICAgICAgbmV0d29ya0Rh
dGFUYXNrLT5uZWdvdGlhdGVkTGVnYWN5VExTKCk7CiAgICAgICAgIAogICAgICAgICAvLyBBdm9p
ZCBNSU1FIHR5cGUgc25pZmZpbmcgaWYgdGhlIHJlc3BvbnNlIGNvbWVzIGJhY2sgYXMgMzA0IE5v
dCBNb2RpZmllZC4KICAgICAgICAgaW50IHN0YXR1c0NvZGUgPSBbcmVzcG9uc2UgaXNLaW5kT2ZD
bGFzczpOU0hUVFBVUkxSZXNwb25zZS5jbGFzc10gPyBbKE5TSFRUUFVSTFJlc3BvbnNlICopcmVz
cG9uc2Ugc3RhdHVzQ29kZV0gOiAwOwpAQCAtODU0LDcgKzg1Miw3IEBAIC0gKHZvaWQpVVJMU2Vz
c2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2kKICAgICAgICAgY29weVRpbWluZ0RhdGEoW2RhdGFU
YXNrIF90aW1pbmdEYXRhXSwgcmVzb3VyY2VSZXNwb25zZS5kZXByZWNhdGVkTmV0d29ya0xvYWRN
ZXRyaWNzKCkpOwogCiAgICAgICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXJDb3B5ID0gQmxvY2tf
Y29weShjb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgICAgIG5ldHdvcmtEYXRhVGFzay0+ZGlkUmVj
ZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzb3VyY2VSZXNwb25zZSksIFtjb21wbGV0aW9uSGFuZGxl
ckNvcHksIHRhc2tJZGVudGlmaWVyXShXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9u
KSB7CisgICAgICAgIG5ldHdvcmtEYXRhVGFzay0+ZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUo
cmVzb3VyY2VSZXNwb25zZSksIG5lZ290aWF0ZWRMZWdhY3lUTFMsIFtjb21wbGV0aW9uSGFuZGxl
ckNvcHksIHRhc2tJZGVudGlmaWVyXShXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9u
KSB7CiAjaWYgIUxPR19ESVNBQkxFRAogICAgICAgICAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAi
JWxsdSBkaWRSZWNlaXZlUmVzcG9uc2UgY29tcGxldGlvbkhhbmRsZXIgKCVkKSIsIHRhc2tJZGVu
dGlmaWVyLCBwb2xpY3lBY3Rpb24pOwogI2Vsc2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAJKHJl
dmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3
b3JrRGF0YVRhc2tDdXJsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI0LDcgKzIyNCw3IEBAIGJv
b2wgTmV0d29ya0RhdGFUYXNrQ3VybDo6c2hvdWxkUmVkaXJlY3QKIAogdm9pZCBOZXR3b3JrRGF0
YVRhc2tDdXJsOjppbnZva2VEaWRSZWNlaXZlUmVzcG9uc2UoKQogewotICAgIGRpZFJlY2VpdmVS
ZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlKG1fcmVzcG9uc2UpLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpXShQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKSB7CisgICAgZGlk
UmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UobV9yZXNwb25zZSksIE5lZ290aWF0ZWRM
ZWdhY3lUTFM6Ok5vLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShQb2xp
Y3lBY3Rpb24gcG9saWN5QWN0aW9uKSB7CiAgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpD
YW5jZWxpbmcgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6Q29tcGxldGVkKQogICAgICAgICAgICAgcmV0
dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0Rh
dGFUYXNrU291cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCShyZXZpc2lvbiAyNTU1ODApCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM3OCw3ICszNzgsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6
OmRpc3BhdGNoRGlkUmVjCiAgICAgZGVwcmVjYXRlZFJlc3BvbnNlTWV0cmljcy5yZXF1ZXN0U3Rh
cnQgPSBtX25ldHdvcmtMb2FkTWV0cmljcy5yZXF1ZXN0U3RhcnQ7CiAgICAgZGVwcmVjYXRlZFJl
c3BvbnNlTWV0cmljcy5yZXNwb25zZVN0YXJ0ID0gbV9uZXR3b3JrTG9hZE1ldHJpY3MucmVzcG9u
c2VTdGFydDsKIAotICAgIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlKG1fcmVz
cG9uc2UpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShQb2xpY3lBY3Rp
b24gcG9saWN5QWN0aW9uKSB7CisgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9u
c2UobV9yZXNwb25zZSksIE5lZ290aWF0ZWRMZWdhY3lUTFM6Ok5vLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpXShQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKSB7CiAgICAg
ICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDYW5jZWxpbmcgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6
Q29tcGxldGVkKSB7CiAgICAgICAgICAgICBjbGVhclJlcXVlc3QoKTsKICAgICAgICAgICAgIHJl
dHVybjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuY3BwCShy
ZXZpc2lvbiAyNTU1ODApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE3LDcgKzMxNyw3IEBAIHZvaWQgUGFnZUxvYWRTdGF0
ZTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG8KICAgICBtX3VuY29tbWl0dGVkU3RhdGUudW5yZWFjaGFi
bGVVUkwgPSBtX2xhc3RVbnJlYWNoYWJsZVVSTDsKIH0KIAotdm9pZCBQYWdlTG9hZFN0YXRlOjpk
aWRDb21taXRMb2FkKGNvbnN0IFRyYW5zYWN0aW9uOjpUb2tlbiYgdG9rZW4sIFdlYkNlcnRpZmlj
YXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBib29sIGhhc0luc2VjdXJlQ29udGVudCkKK3ZvaWQg
UGFnZUxvYWRTdGF0ZTo6ZGlkQ29tbWl0TG9hZChjb25zdCBUcmFuc2FjdGlvbjo6VG9rZW4mIHRv
a2VuLCBXZWJDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCBoYXNJbnNlY3Vy
ZUNvbnRlbnQsIGJvb2wgdXNlZExlZ2FjeVRMUykKIHsKICAgICBBU1NFUlRfVU5VU0VEKHRva2Vu
LCAmdG9rZW4ubV9wYWdlTG9hZFN0YXRlID09IHRoaXMpOwogICAgIEFTU0VSVChtX3VuY29tbWl0
dGVkU3RhdGUuc3RhdGUgPT0gU3RhdGU6OlByb3Zpc2lvbmFsKTsKQEAgLTMyOCw3ICszMjgsNyBA
QCB2b2lkIFBhZ2VMb2FkU3RhdGU6OmRpZENvbW1pdExvYWQoY29uc3QgCiAKICAgICBtX3VuY29t
bWl0dGVkU3RhdGUudXJsID0gbV91bmNvbW1pdHRlZFN0YXRlLnByb3Zpc2lvbmFsVVJMOwogICAg
IG1fdW5jb21taXR0ZWRTdGF0ZS5wcm92aXNpb25hbFVSTCA9IFN0cmluZygpOwotICAgIG1fdW5j
b21taXR0ZWRTdGF0ZS5uZWdvdGlhdGVkTGVnYWN5VExTID0gZmFsc2U7CisgICAgbV91bmNvbW1p
dHRlZFN0YXRlLm5lZ290aWF0ZWRMZWdhY3lUTFMgPSB1c2VkTGVnYWN5VExTOwogCiAgICAgbV91
bmNvbW1pdHRlZFN0YXRlLnRpdGxlID0gU3RyaW5nKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5oCShyZXZpc2lvbiAyNTU1ODApCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw3ICsx
NjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92
aXNpb25hbExvYWQoY29uc3QgVHJhbnNhY3Rpb246OlRva2VuJiwgY29uc3QgU3RyaW5nJiB1cmwp
OwogICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBUcmFuc2FjdGlvbjo6VG9r
ZW4mKTsKIAotICAgIHZvaWQgZGlkQ29tbWl0TG9hZChjb25zdCBUcmFuc2FjdGlvbjo6VG9rZW4m
LCBXZWJDZXJ0aWZpY2F0ZUluZm8mLCBib29sIGhhc0luc2VjdXJlQ29udGVudCk7CisgICAgdm9p
ZCBkaWRDb21taXRMb2FkKGNvbnN0IFRyYW5zYWN0aW9uOjpUb2tlbiYsIFdlYkNlcnRpZmljYXRl
SW5mbyYsIGJvb2wgaGFzSW5zZWN1cmVDb250ZW50LCBib29sIHVzZWRMZWdhY3lUTFMpOwogICAg
IHZvaWQgZGlkRmluaXNoTG9hZChjb25zdCBUcmFuc2FjdGlvbjo6VG9rZW4mKTsKICAgICB2b2lk
IGRpZEZhaWxMb2FkKGNvbnN0IFRyYW5zYWN0aW9uOjpUb2tlbiYpOwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCShyZXZpc2lv
biAyNTU1ODApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIFByb3Zpc2lvbmFs
UGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzCiAgICAgbV9wYWdlLmRpZEZhaWxQcm92aXNpb25hbExv
YWRGb3JGcmFtZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBmcmFtZUlELCBXVEZNb3ZlKGZy
YW1lU2VjdXJpdHlPcmlnaW4pLCBuYXZpZ2F0aW9uSUQsIHByb3Zpc2lvbmFsVVJMLCBlcnJvciwg
d2lsbENvbnRpbnVlTG9hZGluZywgdXNlckRhdGEpOyAvLyBNYXkgZGVsZXRlIHx0aGlzfC4KIH0K
IAotdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZy
YW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJ
bmZvLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0lu
c2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYg
dXNlckRhdGEpCit2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJh
bWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWlu
dDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0
aWZpY2F0ZUluZm8sIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250YWluc1BsdWdpbkRvY3Vt
ZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2Vj
dXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIGlmICghdmFsaWRh
dGVJbnB1dChmcmFtZUlELCBuYXZpZ2F0aW9uSUQpKQogICAgICAgICByZXR1cm47CkBAIC0yNzQs
NyArMjc0LDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZAogICAg
IG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlSUQpOwogCiAgICAgbV93YXNDb21taXR0
ZWQgPSB0cnVlOwotICAgIG1fcGFnZS5jb21taXRQcm92aXNpb25hbFBhZ2UoZnJhbWVJRCwgbmF2
aWdhdGlvbklELCBtaW1lVHlwZSwgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIGZyYW1l
TG9hZFR5cGUsIGNlcnRpZmljYXRlSW5mbywgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgZm9yY2Vk
SGFzSW5zZWN1cmVDb250ZW50LCB1c2VyRGF0YSk7IC8vIFdpbGwgZGVsZXRlIHx0aGlzfC4KKyAg
ICBtX3BhZ2UuY29tbWl0UHJvdmlzaW9uYWxQYWdlKGZyYW1lSUQsIG5hdmlnYXRpb25JRCwgbWlt
ZVR5cGUsIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBmcmFtZUxvYWRUeXBlLCBjZXJ0
aWZpY2F0ZUluZm8sIHVzZWRMZWdhY3lUTFMsIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIGZvcmNl
ZEhhc0luc2VjdXJlQ29udGVudCwgdXNlckRhdGEpOyAvLyBXaWxsIGRlbGV0ZSB8dGhpc3wuCiB9
CiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25E
YXRhKGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmIHN0b3JlLCBGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQ
YWdlUHJveHkuaAkocmV2aXNpb24gMjU1NTgwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UHJvdmlzaW9uYWxQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDcgKzEyMiw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcsIFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRDcmVhdGVNYWluRnJhbWUoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IFVSTCYmLCBVUkwmJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmKTsKLSAgICB2b2lk
IGRpZENvbW1pdExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3Rv
bUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6
Q2VydGlmaWNhdGVJbmZvJiwgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxX
ZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgY29u
c3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRpZENvbW1pdExvYWRGb3JGcmFtZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVM
b2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiwgYm9vbCB1c2VkTGVnYWN5
VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0lu
c2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYp
OwogICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9y
aWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJM
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgV2ViQ29yZTo6V2lsbENvbnRpbnVlTG9h
ZGluZywgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIHN0YXJ0VVJMU2NoZW1lVGFzayhVUkxT
Y2hlbWVUYXNrUGFyYW1ldGVycyYmKTsKICAgICB2b2lkIGJhY2tGb3J3YXJkR29Ub0l0ZW0oY29u
c3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIGNvbnN0IFdlYkJhY2tGb3J3YXJkTGlz
dENvdW50cyYpPiYmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAkocmV2aXNpb24gMjU1NTgwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE1Nyw3ICszMTU3LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpbwogICAgIHNlbmRlci0+c2VuZChhY3Rpb24s
IG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSA6IDAsIGRvd25sb2FkSUQs
IFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpjb21t
aXRQcm92aXNpb25hbFBhZ2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRl
bnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlm
aWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwg
T3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNv
bnRlbnQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpjb21t
aXRQcm92aXNpb25hbFBhZ2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRl
bnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlm
aWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250
YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+
IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewog
ICAgIEFTU0VSVChtX3Byb3Zpc2lvbmFsUGFnZSk7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAiY29tbWl0UHJvdmlzaW9uYWxQYWdlOiBuZXdQSUQgPSAlaSIsIG1fcHJvdmlz
aW9uYWxQYWdlLT5wcm9jZXNzKCkucHJvY2Vzc0lkZW50aWZpZXIoKSk7CkBAIC0zMTkxLDcgKzMx
OTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlCiAgICAgY29u
c3QgYXV0byBvbGRXZWJQYWdlSUQgPSBtX3dlYlBhZ2VJRDsKICAgICBzd2FwVG9Qcm92aXNpb25h
bFBhZ2Uoc3RkOjpleGNoYW5nZShtX3Byb3Zpc2lvbmFsUGFnZSwgbnVsbHB0cikpOwogCi0gICAg
ZGlkQ29tbWl0TG9hZEZvckZyYW1lKGZyYW1lSUQsIG5hdmlnYXRpb25JRCwgbWltZVR5cGUsIGZy
YW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBmcmFtZUxvYWRUeXBlLCBjZXJ0aWZpY2F0ZUlu
Zm8sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgdXNl
ckRhdGEpOworICAgIGRpZENvbW1pdExvYWRGb3JGcmFtZShmcmFtZUlELCBuYXZpZ2F0aW9uSUQs
IG1pbWVUeXBlLCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgZnJhbWVMb2FkVHlwZSwg
Y2VydGlmaWNhdGVJbmZvLCB1c2VkTGVnYWN5VExTLCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBm
b3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIHVzZXJEYXRhKTsKIAogICAgIG1faW5zcGVjdG9yQ29u
dHJvbGxlci0+ZGlkQ29tbWl0UHJvdmlzaW9uYWxQYWdlKG9sZFdlYlBhZ2VJRCwgbV93ZWJQYWdl
SUQpOwogfQpAQCAtNDQ3Nyw3ICs0NDc3LDcgQEAgc3RhdGljIE9wdGlvblNldDxDcm9zc1NpdGVO
YXZpZ2F0aW9uRGF0YQogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRM
b2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92
aWRlciwgdWludDMyX3Qgb3BhcXVlRnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlm
aWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwg
T3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50PiBoYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVz
ZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJh
bWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWlu
dDMyX3Qgb3BhcXVlRnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZv
JiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250YWluc1BsdWdp
bkRvY3VtZW50LCBPcHRpb25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+IGhhc0luc2VjdXJlQ29udGVu
dCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIExPRyhMb2FkaW5nLCAiKExvYWRp
bmcpIFdlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBkaWRDb21taXRMb2FkRm9yRnJhbWUgaW4gbmF2
aWdhdGlvbiAlIiBQUkl1NjQsIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uSUQp
OwogICAgIExPRyhCYWNrRm9yd2FyZCwgIihCYWNrL0ZvcndhcmQpIEFmdGVyIGxvYWQgY29tbWl0
LCBiYWNrL2ZvcndhcmQgbGlzdCBpcyBub3c6JXMiLCBtX2JhY2tGb3J3YXJkTGlzdC0+bG9nZ2lu
Z1N0cmluZygpKTsKQEAgLTQ1MTksNyArNDUxOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRD
b21taXRMb2FkRm9yRnJhbWUKICAgICBib29sIG1hcmtQYWdlSW5zZWN1cmUgPSBoYXNJbnNlY3Vy
ZUNvbnRlbnQgPyBoYXNJbnNlY3VyZUNvbnRlbnQudmFsdWUoKSA9PSBIYXNJbnNlY3VyZUNvbnRl
bnQ6OlllcyA6IG1fdHJlYXRzU0hBMUNlcnRpZmljYXRlc0FzSW5zZWN1cmUgJiYgY2VydGlmaWNh
dGVJbmZvLmNvbnRhaW5zTm9uUm9vdFNIQTFTaWduZWRDZXJ0aWZpY2F0ZSgpOwogCiAgICAgaWYg
KGZyYW1lLT5pc01haW5GcmFtZSgpKSB7Ci0gICAgICAgIG1fcGFnZUxvYWRTdGF0ZS5kaWRDb21t
aXRMb2FkKHRyYW5zYWN0aW9uLCB3ZWJDZXJ0aWZpY2F0ZUluZm8sIG1hcmtQYWdlSW5zZWN1cmUp
OworICAgICAgICBtX3BhZ2VMb2FkU3RhdGUuZGlkQ29tbWl0TG9hZCh0cmFuc2FjdGlvbiwgd2Vi
Q2VydGlmaWNhdGVJbmZvLCBtYXJrUGFnZUluc2VjdXJlLCB1c2VkTGVnYWN5VExTKTsKICAgICAg
ICAgbV9zaG91bGRTdXBwcmVzc05leHRBdXRvbWF0aWNOYXZpZ2F0aW9uU25hcHNob3QgPSBmYWxz
ZTsKICAgICB9IGVsc2UgaWYgKG1hcmtQYWdlSW5zZWN1cmUpCiAgICAgICAgIG1fcGFnZUxvYWRT
dGF0ZS5kaWREaXNwbGF5T3JSdW5JbnNlY3VyZUNvbnRlbnQodHJhbnNhY3Rpb24pOwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI1NTU4MCkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTg2LDcgKzE1ODYsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIFByb3Zpc2lvbmFsUGFn
ZVByb3h5KiBwcm92aXNpb25hbFBhZ2VQcm94eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdmlzaW9u
YWxQYWdlLmdldCgpOyB9Ci0gICAgdm9pZCBjb21taXRQcm92aXNpb25hbFBhZ2UoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1l
TG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYsIGJvb2wgY29udGFpbnNQ
bHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3Jj
ZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBjb21taXRQ
cm92aXNpb25hbFBhZ2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50
UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmlj
YXRlSW5mbyYsIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50
LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJl
Q29udGVudCwgY29uc3QgVXNlckRhdGEmKTsKIAogICAgIC8vIExvZ2ljIHNoYXJlZCBiZXR3ZWVu
IHRoZSBXZWJQYWdlUHJveHkgYW5kIHRoZSBQcm92aXNpb25hbFBhZ2VQcm94eS4KICAgICB2b2lk
IGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94
eT4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVS
TCYmLCBVUkwmJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmKTsKQEAgLTE3MzYsNyAr
MTczNiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZy
YW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRDaGFuZ2VQcm92aXNp
b25hbFVSTEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBVUkwmJik7CiAgICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBm
cmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYg
cHJvdmlzaW9uYWxVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBXZWJDb3JlOjpX
aWxsQ29udGludWVMb2FkaW5nLCBjb25zdCBVc2VyRGF0YSYpOwotICAgIHZvaWQgZGlkQ29tbWl0
TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFBy
b3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0
ZUluZm8mLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhh
c0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0
YSYpOworICAgIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29s
IGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBj
b25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mLCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wg
Y29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250
ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9p
ZCBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZEZp
bmlzaExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZEZhaWxMb2FkRm9yRnJhbWUo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBVc2VyRGF0YSYpOwpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24g
MjU1NTgwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNyArMTI2LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZVByb3h5IHsKICAgICBEaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciBmcmFtZUlEKQogICAgIERpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJh
bWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgVVJMIHVybCkKICAgICBEaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBTdHJpbmcgcHJv
dmlzaW9uYWxVUkwsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIGVudW06Ym9vbCBXZWJD
b3JlOjpXaWxsQ29udGludWVMb2FkaW5nIHdpbGxDb250aW51ZUxvYWRpbmcsIFdlYktpdDo6VXNl
ckRhdGEgdXNlckRhdGEpCi0gICAgRGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFN0cmluZyBtaW1lVHlw
ZSwgYm9vbCBoYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGxvYWRUeXBlLCBXZWJD
b3JlOjpDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvLCBib29sIGNvbnRhaW5zUGx1Z2lu
RG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFz
SW5zZWN1cmVDb250ZW50LCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQorICAgIERpZENvbW1p
dExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBTdHJpbmcgbWltZVR5cGUsIGJvb2wgaGFzQ3VzdG9tQ29udGVudFByb3Zp
ZGVyLCB1aW50MzJfdCBsb2FkVHlwZSwgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvIGNlcnRpZmlj
YXRlSW5mbywgYm9vbCB1c2VkTGVnYWN5VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQs
IE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVD
b250ZW50LCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIERpZEZhaWxMb2FkRm9yRnJh
bWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0
YSkKICAgICBEaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJLaXQ6OlVzZXJEYXRhIHVz
ZXJEYXRhKQogICAgIERpZEZpbmlzaExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJE
YXRhKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAyNTU1
ODApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NjAsNyArNTYwLDcgQEAgdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDbwogICAgIHdlYlBhZ2UtPnNhbmRib3hF
eHRlbnNpb25UcmFja2VyKCkuZGlkQ29tbWl0UHJvdmlzaW9uYWxMb2FkKG1fZnJhbWUpOwogCiAg
ICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCi0gICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpEaWRDb21taXRMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBk
b2N1bWVudExvYWRlci5uYXZpZ2F0aW9uSUQoKSwgZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKS5t
aW1lVHlwZSgpLCBtX2ZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBzdGF0aWNfY2FzdDx1
aW50MzJfdD4obV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmxvYWRUeXBlKCkpLCB2YWx1
ZU9yQ29tcHV0ZShkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLmNlcnRpZmljYXRlSW5mbygpLCBb
XSB7IHJldHVybiBDZXJ0aWZpY2F0ZUluZm8oKTsgfSksIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5k
b2N1bWVudCgpLT5pc1BsdWdpbkRvY3VtZW50KCksIGhhc0luc2VjdXJlQ29udGVudCwgVXNlckRh
dGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2Vy
RGF0YS5nZXQoKSkuZ2V0KCkpKSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEaWRDb21taXRMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBkb2N1bWVu
dExvYWRlci5uYXZpZ2F0aW9uSUQoKSwgZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKS5taW1lVHlw
ZSgpLCBtX2ZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBzdGF0aWNfY2FzdDx1aW50MzJf
dD4obV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmxvYWRUeXBlKCkpLCB2YWx1ZU9yQ29t
cHV0ZShkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLmNlcnRpZmljYXRlSW5mbygpLCBbXSB7IHJl
dHVybiBDZXJ0aWZpY2F0ZUluZm8oKTsgfSksIGRvY3VtZW50TG9hZGVyLnJlc3BvbnNlKCkudXNl
ZExlZ2FjeVRMUygpLCBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKS0+aXNQbHVnaW5E
b2N1bWVudCgpLCBoYXNJbnNlY3VyZUNvbnRlbnQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkp
OwogICAgIHdlYlBhZ2UtPmRpZENvbW1pdExvYWQobV9mcmFtZSk7CiB9CiAKSW5kZXg6IFRvb2xz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NTY4
MikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisy
MDIwLTAyLTA0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgRml4IHJhY2UgY29uZGl0aW9uIGZvciBXS1dlYlZpZXcuX25lZ290aWF0ZWRMZWdh
Y3lUTFMgd2hlbiBsb2FkaW5nIG1haW4gcmVzb3VvcmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcyMDcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIVFRQU2VydmVyIG5vdyBzdXBwb3J0cyBIVFRQUy4g
VGVsbCB5b3VyIGZyaWVuZHMhCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0NoYWxsZW5nZS5tbToKKyAgICAgICAgKHRlc3RDZXJ0aWZpY2F0ZSk6CisgICAgICAg
ICh0ZXN0SWRlbnRpdHkpOgorICAgICAgICAoY3JlZGVudGlhbFdpdGhJZGVudGl0eSk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UTFNEZXByZWNhdGlvbi5tbToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OndlYlZpZXdXaXRoTmF2aWdhdGlvbkRlbGVnYXRlKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
Y29jb2EvSFRUUFNlcnZlci5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNl
cnZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OkhUVFBTZXJ2ZXIp
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6cmVxdWVzdCBjb25zdCk6CisK
IDIwMjAtMDItMDQgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAg
ICAgICAgIFtDTWFrZV0gQWRkIENhaXJvOjpDYWlybyB0YXJnZXQKSW5kZXg6IFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2hhbGxlbmdlLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2hhbGxlbmdlLm1tCShyZXZpc2lv
biAyNTU1ODApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NoYWxs
ZW5nZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogCiAjaW1wb3J0ICJjb25m
aWcuaCIKIAorI2ltcG9ydCAiSFRUUFNlcnZlci5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRp
ZXMuaCIKICNpbXBvcnQgIlRDUFNlcnZlci5oIgogI2ltcG9ydCAiVGVzdC5oIgpAQCAtNDMsMTEg
KzQ0LDE0IEBACiAKIHN0YXRpYyBib29sIG5hdmlnYXRpb25GaW5pc2hlZDsKIAotc3RhdGljIFJl
dGFpblB0cjxOU1VSTENyZWRlbnRpYWw+IGNyZWRlbnRpYWxXaXRoSWRlbnRpdHkoKQorc3RhdGlj
IFJldGFpblB0cjxTZWNDZXJ0aWZpY2F0ZVJlZj4gdGVzdENlcnRpZmljYXRlKCkKIHsKICAgICBh
dXRvIGNlcnRpZmljYXRlQnl0ZXMgPSBUZXN0V2ViS2l0QVBJOjpUQ1BTZXJ2ZXI6OnRlc3RDZXJ0
aWZpY2F0ZSgpOwotICAgIGF1dG8gY2VydGlmaWNhdGUgPSBhZG9wdENGKFNlY0NlcnRpZmljYXRl
Q3JlYXRlV2l0aERhdGEobnVsbHB0ciwgKF9fYnJpZGdlIENGRGF0YVJlZilbTlNEYXRhIGRhdGFX
aXRoQnl0ZXM6Y2VydGlmaWNhdGVCeXRlcy5kYXRhKCkgbGVuZ3RoOmNlcnRpZmljYXRlQnl0ZXMu
c2l6ZSgpXSkpOwotICAgIAorICAgIHJldHVybiBhZG9wdENGKFNlY0NlcnRpZmljYXRlQ3JlYXRl
V2l0aERhdGEobnVsbHB0ciwgKF9fYnJpZGdlIENGRGF0YVJlZilbTlNEYXRhIGRhdGFXaXRoQnl0
ZXM6Y2VydGlmaWNhdGVCeXRlcy5kYXRhKCkgbGVuZ3RoOmNlcnRpZmljYXRlQnl0ZXMuc2l6ZSgp
XSkpOworfQorCitSZXRhaW5QdHI8U2VjSWRlbnRpdHlSZWY+IHRlc3RJZGVudGl0eSgpCit7CiAg
ICAgYXV0byBwcml2YXRlS2V5Qnl0ZXMgPSBUZXN0V2ViS2l0QVBJOjpUQ1BTZXJ2ZXI6OnRlc3RQ
cml2YXRlS2V5KCk7CiAgICAgTlNEYXRhICpkZXJFbmNvZGVkUHJpdmF0ZUtleSA9IFtOU0RhdGEg
ZGF0YVdpdGhCeXRlczpwcml2YXRlS2V5Qnl0ZXMuZGF0YSgpIGxlbmd0aDpwcml2YXRlS2V5Qnl0
ZXMuc2l6ZSgpXTsKICAgICBOU0RpY3Rpb25hcnkqIG9wdGlvbnMgPSBAewpAQCAtNjEsMTAgKzY1
LDE1IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNVUkxDcmVkZW50aWFsPiBjcmVkZW4KICAgICBFWFBF
Q1RfTlVMTChlcnJvcik7CiAgICAgRVhQRUNUX05PVF9OVUxMKHByaXZhdGVLZXkuZ2V0KCkpOwog
Ci0gICAgYXV0byBpZGVudGl0eSA9IGFkb3B0Q0YoU2VjSWRlbnRpdHlDcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgY2VydGlmaWNhdGUuZ2V0KCksIHByaXZhdGVLZXkuZ2V0KCkpKTsKKyAgICBy
ZXR1cm4gYWRvcHRDRihTZWNJZGVudGl0eUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB0ZXN0
Q2VydGlmaWNhdGUoKS5nZXQoKSwgcHJpdmF0ZUtleS5nZXQoKSkpOworfQorCitzdGF0aWMgUmV0
YWluUHRyPE5TVVJMQ3JlZGVudGlhbD4gY3JlZGVudGlhbFdpdGhJZGVudGl0eSgpCit7CisgICAg
YXV0byBpZGVudGl0eSA9IHRlc3RJZGVudGl0eSgpOwogICAgIEVYUEVDVF9OT1RfTlVMTChpZGVu
dGl0eSk7CiAgICAgCi0gICAgcmV0dXJuIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbFdpdGhJ
ZGVudGl0eTppZGVudGl0eS5nZXQoKSBjZXJ0aWZpY2F0ZXM6QFsoaWQpY2VydGlmaWNhdGUuZ2V0
KCldIHBlcnNpc3RlbmNlOk5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZV07CisgICAgcmV0
dXJuIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbFdpdGhJZGVudGl0eTppZGVudGl0eS5nZXQo
KSBjZXJ0aWZpY2F0ZXM6QFsoaWQpdGVzdENlcnRpZmljYXRlKCkuZ2V0KCldIHBlcnNpc3RlbmNl
Ok5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZV07CiB9CiAKIEBpbnRlcmZhY2UgQ2hhbGxl
bmdlRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+CkluZGV4OiBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RMU0RlcHJlY2F0aW9uLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVExTRGVwcmVj
YXRpb24ubW0JKHJldmlzaW9uIDI1NTU4MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvVExTRGVwcmVjYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3
LDcgQEAKIAogI2lmIEhBVkUoU1NMKQogCisjaW1wb3J0ICJIVFRQU2VydmVyLmgiCiAjaW1wb3J0
ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVENQU2VydmVyLmgiCiAjaW1wb3J0ICJU
ZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCkBAIC0zNywxMyArMzgsMTQgQEAKICNpbXBvcnQgPFdl
YktpdC9XZWJLaXQuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL3RleHQv
U3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
I2ltcG9ydCA8V2ViS2l0L1dlYlVJS2l0U3VwcG9ydC5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkNv
cmVUaHJlYWQuaD4KICNlbmRpZgogCi0jaWYgSEFWRShUTFNfUFJPVE9DT0xfVkVSU0lPTl9UKQor
I2lmIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkgfHwgSEFWRShORVRXT1JLX0ZSQU1FV09S
SykKIEBpbnRlcmZhY2UgVExTT2JzZXJ2ZXIgOiBOU09iamVjdAogLSAodm9pZCl3YWl0VW50aWxO
ZWdvdGlhdGVkTGVnYWN5VExTQ2hhbmdlZDsKIEBlbmQKQEAgLTIyNywxNCArMjI5LDEwIEBAIFRF
U1QoVExTVmVyc2lvbiwgRElTQUJMRURfTmF2aWdhdGlvbkRlbGUKICAgICB9CiB9CiAKLSNpZiBI
QVZFKFRMU19QUk9UT0NPTF9WRVJTSU9OX1QpCi1URVNUKFRMU1ZlcnNpb24sIE5lZ290aWF0ZWRM
ZWdhY3lUTFMpCi17Ci0gICAgVENQU2VydmVyIHNlcnZlcihUQ1BTZXJ2ZXI6OlByb3RvY29sOjpI
VFRQUywgW10gKFNTTCAqc3NsKSB7Ci0gICAgICAgIFRDUFNlcnZlcjo6cmVzcG9uZFdpdGhPSyhz
c2wpOwotICAgICAgICBUQ1BTZXJ2ZXI6OnJlc3BvbmRXaXRoT0soc3NsKTsKLSAgICB9LCB0bHMx
XzEpOworI2lmIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkgfHwgSEFWRShORVRXT1JLX0ZS
QU1FV09SSykKIAorc3RhdGljIHN0ZDo6cGFpcjxSZXRhaW5QdHI8V0tXZWJWaWV3PiwgUmV0YWlu
UHRyPFRlc3ROYXZpZ2F0aW9uRGVsZWdhdGU+PiB3ZWJWaWV3V2l0aE5hdmlnYXRpb25EZWxlZ2F0
ZSgpCit7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdh
dGUgbmV3XSk7CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwog
ICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CkBAIC0y
NDIsNiArMjQwLDIwIEBAIFRFU1QoVExTVmVyc2lvbiwgTmVnb3RpYXRlZExlZ2FjeVRMUykKICAg
ICAgICAgRVhQRUNUX1dLX1NUUkVRKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGlj
YXRpb25NZXRob2QsIE5TVVJMQXV0aGVudGljYXRpb25NZXRob2RTZXJ2ZXJUcnVzdCk7CiAgICAg
ICAgIGNhbGxiYWNrKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNV
UkxDcmVkZW50aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNl
LnNlcnZlclRydXN0XSk7CiAgICAgfV07CisgICAgcmV0dXJuIHsgd2ViVmlldywgZGVsZWdhdGUg
fTsKK30KKworI2VuZGlmIC8vIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkgfHwgSEFWRShO
RVRXT1JLX0ZSQU1FV09SSykKKworI2lmIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkKKwor
VEVTVChUTFNWZXJzaW9uLCBOZWdvdGlhdGVkTGVnYWN5VExTKQoreworICAgIEhUVFBTZXJ2ZXIg
c2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsgImhlbGxvIiB9IH0KKyAgICB9LCBIVFRQU2VydmVy
OjpQcm90b2NvbDo6SHR0cHNXaXRoTGVnYWN5VExTKTsKKworICAgIGF1dG8gW3dlYlZpZXcsIGRl
bGVnYXRlXSA9IHdlYlZpZXdXaXRoTmF2aWdhdGlvbkRlbGVnYXRlKCk7CiAgICAgTlNVUkxSZXF1
ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0
aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVk
LyIsIHNlcnZlci5wb3J0KCldXV07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07
CiAKQEAgLTI2Miw3ICsyNzQsNjQgQEAgVEVTVChUTFNWZXJzaW9uLCBOZWdvdGlhdGVkTGVnYWN5
VExTKQogCiAgICAgW3dlYlZpZXcgcmVtb3ZlT2JzZXJ2ZXI6b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5
UGF0aDpAIl9uZWdvdGlhdGVkTGVnYWN5VExTIl07CiB9Ci0jZW5kaWYKKworI2VuZGlmIC8vIEhB
VkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkKKworI2lmIEhBVkUoTkVUV09SS19GUkFNRVdPUksp
CisKK1RFU1QoVExTVmVyc2lvbiwgTmF2aWdhdGVCYWNrKQoreworICAgIEhUVFBTZXJ2ZXIgbGVn
YWN5VExTU2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsgImhlbGxvIiB9IH0KKyAgICB9LCBIVFRQ
U2VydmVyOjpQcm90b2NvbDo6SHR0cHNXaXRoTGVnYWN5VExTKTsKKworICAgIEhUVFBTZXJ2ZXIg
bW9kZXJuVExTU2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsgImhlbGxvIiB9IH0KKyAgICB9LCBI
VFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOworICAgIAorICAgIGF1dG8gW3dlYlZpZXcsIGRl
bGVnYXRlXSA9IHdlYlZpZXdXaXRoTmF2aWdhdGlvbkRlbGVnYXRlKCk7CisgICAgYXV0byBvYnNl
cnZlciA9IGFkb3B0TlMoW1RMU09ic2VydmVyIG5ld10pOworICAgIFt3ZWJWaWV3IGFkZE9ic2Vy
dmVyOm9ic2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJfbmVnb3RpYXRlZExlZ2FjeVRMUyIgb3B0
aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6bmlsXTsKKworICAgIFt3
ZWJWaWV3IGxvYWRSZXF1ZXN0OmxlZ2FjeVRMU1NlcnZlci5yZXF1ZXN0KCldOworICAgIEVYUEVD
VF9GQUxTRShbd2ViVmlldyBfbmVnb3RpYXRlZExlZ2FjeVRMU10pOworICAgIFtkZWxlZ2F0ZSB3
YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgX25l
Z290aWF0ZWRMZWdhY3lUTFNdKTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0Om1vZGVyblRM
U1NlcnZlci5yZXF1ZXN0KCldOworICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdh
dGlvbl07CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IF9uZWdvdGlhdGVkTGVnYWN5VExTXSk7
CisKKyAgICBbd2ViVmlldyBnb0JhY2tdOworICAgIFtvYnNlcnZlciB3YWl0VW50aWxOZWdvdGlh
dGVkTGVnYWN5VExTQ2hhbmdlZF07CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgX25lZ290aWF0
ZWRMZWdhY3lUTFNdKTsKKworICAgIFt3ZWJWaWV3IHJlbW92ZU9ic2VydmVyOm9ic2VydmVyLmdl
dCgpIGZvcktleVBhdGg6QCJfbmVnb3RpYXRlZExlZ2FjeVRMUyJdOworfQorCitURVNUKFRMU1Zl
cnNpb24sIFN1YnJlc291cmNlKQoreworICAgIEhUVFBTZXJ2ZXIgbGVnYWN5VExTU2VydmVyKHsK
KyAgICAgICAgeyAiLyIsIHsgImhlbGxvIiB9IH0KKyAgICB9LCBIVFRQU2VydmVyOjpQcm90b2Nv
bDo6SHR0cHNXaXRoTGVnYWN5VExTKTsKKworICAgIEhUVFBTZXJ2ZXIgbW9kZXJuVExTU2VydmVy
KHsKKyAgICAgICAgeyAiLyIsIHsgbWFrZVN0cmluZygiPHNjcmlwdD5mZXRjaCgnaHR0cHM6Ly8x
MjcuMC4wLjE6Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlZ2FjeVRMU1NlcnZlci5wb3J0KCkp
LCAiLycse21vZGU6J25vLWNvcnMnfSk8L3NjcmlwdD4iKSB9IH0KKyAgICB9LCBIVFRQU2VydmVy
OjpQcm90b2NvbDo6SHR0cHMpOworICAgIAorICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9
IHdlYlZpZXdXaXRoTmF2aWdhdGlvbkRlbGVnYXRlKCk7CisgICAgYXV0byBvYnNlcnZlciA9IGFk
b3B0TlMoW1RMU09ic2VydmVyIG5ld10pOworICAgIFt3ZWJWaWV3IGFkZE9ic2VydmVyOm9ic2Vy
dmVyLmdldCgpIGZvcktleVBhdGg6QCJfbmVnb3RpYXRlZExlZ2FjeVRMUyIgb3B0aW9uczpOU0tl
eVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6bmlsXTsKKworICAgIEVYUEVDVF9GQUxT
RShbd2ViVmlldyBfbmVnb3RpYXRlZExlZ2FjeVRMU10pOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0Om1vZGVyblRMU1NlcnZlci5yZXF1ZXN0KCldOworICAgIHdoaWxlICghW3dlYlZpZXcgX25l
Z290aWF0ZWRMZWdhY3lUTFNdKQorICAgICAgICBbb2JzZXJ2ZXIgd2FpdFVudGlsTmVnb3RpYXRl
ZExlZ2FjeVRMU0NoYW5nZWRdOworCisgICAgW3dlYlZpZXcgcmVtb3ZlT2JzZXJ2ZXI6b2JzZXJ2
ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAIl9uZWdvdGlhdGVkTGVnYWN5VExTIl07Cit9CisKKyNlbmRp
ZiAvLyBIQVZFKE5FVFdPUktfRlJBTUVXT1JLKQogCiAvLyBGSVhNRTogQWRkIHNvbWUgdGVzdHMg
Zm9yIFdLV2ViVmlldy5oYXNPbmx5U2VjdXJlQ29udGVudAogCkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0
QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaAkocmV2aXNpb24gMjU1NTgwKQorKysgVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDgg
QEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogY2xhc3MgSFRUUFNlcnZlciB7CiBwdWJsaWM6
CiAgICAgc3RydWN0IEhUVFBSZXNwb25zZTsKLSAgICBIVFRQU2VydmVyKHN0ZDo6aW5pdGlhbGl6
ZXJfbGlzdDxzdGQ6OnBhaXI8U3RyaW5nLCBIVFRQUmVzcG9uc2U+Pik7CisgICAgZW51bSBjbGFz
cyBQcm90b2NvbCA6IHVpbnQ4X3QgeyBIdHRwLCBIdHRwcywgSHR0cHNXaXRoTGVnYWN5VExTIH07
CisgICAgSFRUUFNlcnZlcihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPFN0cmluZywg
SFRUUFJlc3BvbnNlPj4sIFByb3RvY29sID0gUHJvdG9jb2w6Okh0dHApOwogICAgIHVpbnQxNl90
IHBvcnQoKSBjb25zdDsKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QoKSBjb25zdDsKICAgICAK
QEAgLTQ2LDYgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc3BvbmRUb1JlcXVlc3RzKG53
X2Nvbm5lY3Rpb25fdCk7CiAgICAgCiAgICAgUmV0YWluUHRyPG53X2xpc3RlbmVyX3Q+IG1fbGlz
dGVuZXI7CisgICAgY29uc3QgUHJvdG9jb2wgbV9wcm90b2NvbDsKICAgICBjb25zdCBIYXNoTWFw
PFN0cmluZywgSFRUUFJlc3BvbnNlPiBtX3JlcXVlc3RSZXNwb25zZU1hcDsKIH07CiAKQEAgLTc0
LDMgKzc2LDUgQEAgc3RydWN0IEhUVFBTZXJ2ZXI6OkhUVFBSZXNwb25zZSB7CiB9IC8vIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJCiAKICNlbmRpZiAvLyBIQVZFKE5FVFdPUktfRlJBTUVXT1JLKQor
CitSZXRhaW5QdHI8U2VjSWRlbnRpdHlSZWY+IHRlc3RJZGVudGl0eSgpOwpJbmRleDogVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQkocmV2aXNpb24gMjU1NTgwKQorKysgVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0z
MywxNSArMzMsMjMgQEAKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi1IVFRQU2VydmVy
OjpIVFRQU2VydmVyKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8U3RyaW5nLCBIVFRQ
UmVzcG9uc2U+PiByZXNwb25zZXMpCi0gICAgOiBtX3JlcXVlc3RSZXNwb25zZU1hcChbXShzdGQ6
OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPFN0cmluZywgSFRUUFNlcnZlcjo6SFRUUFJlc3Bv
bnNlPj4gbGlzdCkgeworSFRUUFNlcnZlcjo6SFRUUFNlcnZlcihzdGQ6OmluaXRpYWxpemVyX2xp
c3Q8c3RkOjpwYWlyPFN0cmluZywgSFRUUFJlc3BvbnNlPj4gcmVzcG9uc2VzLCBQcm90b2NvbCBw
cm90b2NvbCkKKyAgICA6IG1fcHJvdG9jb2wocHJvdG9jb2wpCisgICAgLCBtX3JlcXVlc3RSZXNw
b25zZU1hcChbXShzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPFN0cmluZywgSFRUUFNl
cnZlcjo6SFRUUFJlc3BvbnNlPj4gbGlzdCkgewogICAgICAgICBIYXNoTWFwPFN0cmluZywgSFRU
UFNlcnZlcjo6SFRUUFJlc3BvbnNlPiBtYXA7CiAgICAgICAgIGZvciAoYXV0byYgcGFpciA6IGxp
c3QpCiAgICAgICAgICAgICBtYXAuYWRkKHBhaXIuZmlyc3QsIHBhaXIuc2Vjb25kKTsKICAgICAg
ICAgcmV0dXJuIG1hcDsKICAgICB9KHJlc3BvbnNlcykpCiB7Ci0gICAgYXV0byBwYXJhbWV0ZXJz
ID0gYWRvcHROUyhud19wYXJhbWV0ZXJzX2NyZWF0ZV9zZWN1cmVfdGNwKE5XX1BBUkFNRVRFUlNf
RElTQUJMRV9QUk9UT0NPTCwgTldfUEFSQU1FVEVSU19ERUZBVUxUX0NPTkZJR1VSQVRJT04pKTsK
KyAgICBhdXRvIGNvbmZpZ3VyZVRMUyA9IHByb3RvY29sID09IFByb3RvY29sOjpIdHRwID8gTldf
UEFSQU1FVEVSU19ESVNBQkxFX1BST1RPQ09MIDogXihud19wcm90b2NvbF9vcHRpb25zX3QgcHJv
dG9jb2xPcHRpb25zKSB7CisgICAgICAgIGF1dG8gb3B0aW9ucyA9IGFkb3B0TlMobndfdGxzX2Nv
cHlfc2VjX3Byb3RvY29sX29wdGlvbnMocHJvdG9jb2xPcHRpb25zKSk7CisgICAgICAgIGF1dG8g
aWRlbnRpdHkgPSBhZG9wdE5TKHNlY19pZGVudGl0eV9jcmVhdGUodGVzdElkZW50aXR5KCkuZ2V0
KCkpKTsKKyAgICAgICAgc2VjX3Byb3RvY29sX29wdGlvbnNfc2V0X2xvY2FsX2lkZW50aXR5KG9w
dGlvbnMuZ2V0KCksIGlkZW50aXR5LmdldCgpKTsKKyAgICAgICAgaWYgKHByb3RvY29sID09IFBy
b3RvY29sOjpIdHRwc1dpdGhMZWdhY3lUTFMpCisgICAgICAgICAgICBzZWNfcHJvdG9jb2xfb3B0
aW9uc19zZXRfbWF4X3Rsc19wcm90b2NvbF92ZXJzaW9uKG9wdGlvbnMuZ2V0KCksIHRsc19wcm90
b2NvbF92ZXJzaW9uX1RMU3YxMCk7CisgICAgfTsKKyAgICBhdXRvIHBhcmFtZXRlcnMgPSBhZG9w
dE5TKG53X3BhcmFtZXRlcnNfY3JlYXRlX3NlY3VyZV90Y3AoY29uZmlndXJlVExTLCBOV19QQVJB
TUVURVJTX0RFRkFVTFRfQ09ORklHVVJBVElPTikpOwogICAgIG1fbGlzdGVuZXIgPSBhZG9wdE5T
KG53X2xpc3RlbmVyX2NyZWF0ZShwYXJhbWV0ZXJzLmdldCgpKSk7CiAgICAgbndfbGlzdGVuZXJf
c2V0X3F1ZXVlKG1fbGlzdGVuZXIuZ2V0KCksIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOwog
ICAgIG53X2xpc3RlbmVyX3NldF9uZXdfY29ubmVjdGlvbl9oYW5kbGVyKG1fbGlzdGVuZXIuZ2V0
KCksIF4obndfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24pIHsKQEAgLTEyNyw3ICsxMzUsMTUgQEAg
dWludDE2X3QgSFRUUFNlcnZlcjo6cG9ydCgpIGNvbnN0CiAKIE5TVVJMUmVxdWVzdCAqSFRUUFNl
cnZlcjo6cmVxdWVzdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFtOU1VSTFJlcXVlc3QgcmVxdWVz
dFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
QCJodHRwOi8vMTI3LjAuMC4xOiVkLyIsIHBvcnQoKV1dXTsKKyAgICBOU1N0cmluZyAqZm9ybWF0
OworICAgIHN3aXRjaCAobV9wcm90b2NvbCkgeworICAgIGNhc2UgUHJvdG9jb2w6Okh0dHA6Cisg
ICAgICAgIGZvcm1hdCA9IEAiaHR0cDovLzEyNy4wLjAuMTolZC8iOworICAgIGNhc2UgUHJvdG9j
b2w6Okh0dHBzOgorICAgIGNhc2UgUHJvdG9jb2w6Okh0dHBzV2l0aExlZ2FjeVRMUzoKKyAgICAg
ICAgZm9ybWF0ID0gQCJodHRwczovLzEyNy4wLjAuMTolZC8iOworICAgIH0KKyAgICByZXR1cm4g
W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpmb3JtYXQsIHBvcnQoKV1dXTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389692</attachid>
            <date>2020-02-04 12:43:19 -0800</date>
            <delta_ts>2020-02-04 13:50:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207207-20200204124318.patch</filename>
            <type>text/plain</type>
            <size>55251</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDIwLTAyLTA0ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRml4IHJhY2Ug
Y29uZGl0aW9uIGZvciBXS1dlYlZpZXcuX25lZ290aWF0ZWRMZWdhY3lUTFMgd2hlbiBsb2FkaW5n
IG1haW4gcmVzb3VvcmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDcyMDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmluY2x1ZGVDZXJ0aWZpY2F0ZUlu
Zm8gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJh
c2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjp1c2VkTGVnYWN5
VExTIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmRlY29k
ZSk6CisKIDIwMjAtMDItMDMgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIERvIG5vdCBjb3B5IGZlYXR1cmUgcG9saWN5IGluIGlzRmVhdHVyZVBvbGljeUFsbG93
ZWRCeURvY3VtZW50QW5kQWxsT3duZXJzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAkocmV2aXNpb24g
MjU1NTgwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3Bv
bnNlQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MSwxMSArMjYxLDEyIEBAIHZvaWQgUmVz
b3VyY2VSZXNwb25zZUJhc2U6OnNldFR5cGUoVHlwZSAKICAgICBtX3R5cGUgPSB0eXBlOwogfQog
Ci12b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjppbmNsdWRlQ2VydGlmaWNhdGVJbmZvKCkgY29u
c3QKK3ZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8oVXNl
ZExlZ2FjeVRMUyB1c2VkTGVnYWN5VExTKSBjb25zdAogewogICAgIGlmIChtX2NlcnRpZmljYXRl
SW5mbykKICAgICAgICAgcmV0dXJuOwogICAgIG1fY2VydGlmaWNhdGVJbmZvID0gc3RhdGljX2Nh
c3Q8Y29uc3QgUmVzb3VyY2VSZXNwb25zZSo+KHRoaXMpLT5wbGF0Zm9ybUNlcnRpZmljYXRlSW5m
bygpOworICAgIG1fdXNlZExlZ2FjeVRMUyA9IHVzZWRMZWdhY3lUTFM7CiB9CiAKIFN0cmluZyBS
ZXNvdXJjZVJlc3BvbnNlQmFzZTo6c3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25z
ZUJhc2UuaAkocmV2aXNpb24gMjU1NTgwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw4
IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiAKIGJvb2wgaXNTY3JpcHRBbGxvd2VkQnlOb3Nu
aWZmKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIAorZW51bSBjbGFzcyBVc2VkTGVnYWN5VExT
IDogYm9vbCB7IE5vLCBZZXMgfTsKKwogLy8gRG8gbm90IHVzZSB0aGlzIGNsYXNzIGRpcmVjdGx5
LCB1c2UgdGhlIGNsYXNzIFJlc291cmNlUmVzcG9uc2UgaW5zdGVhZAogY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZUJhc2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMTI3LDggKzEy
OSw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5h
bWUoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIHNhbml0aXplU3Vn
Z2VzdGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8oKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8oVXNlZExlZ2FjeVRMUyA9IFVzZWRMZWdhY3lUTFM6Ok5v
KSBjb25zdDsKICAgICBjb25zdCBPcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+JiBjZXJ0aWZpY2F0
ZUluZm8oKSBjb25zdCB7IHJldHVybiBtX2NlcnRpZmljYXRlSW5mbzsgfTsKKyAgICBib29sIHVz
ZWRMZWdhY3lUTFMoKSBjb25zdCB7IHJldHVybiBtX3VzZWRMZWdhY3lUTFMgPT0gVXNlZExlZ2Fj
eVRMUzo6WWVzOyB9CiAgICAgCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIHJldHVybiBwYXJzZWQg
dmFsdWVzIG9mIHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlIGhlYWRlcnMuCiAgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBjYWNoZUNvbnRyb2xDb250YWluc05vQ2FjaGUoKSBjb25zdDsKQEAgLTI0
Niw3ICsyNDksOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1JhbmdlUmVxdWVzdGVkIHsgZmFs
c2UgfTsKIAogcHJvdGVjdGVkOgotICAgIGludCBtX2h0dHBTdGF0dXNDb2RlIHsgMCB9OworICAg
IHNob3J0IG1faHR0cFN0YXR1c0NvZGUgeyAwIH07CisgICAgbXV0YWJsZSBVc2VkTGVnYWN5VExT
IG1fdXNlZExlZ2FjeVRMUyB7IFVzZWRMZWdhY3lUTFM6Ok5vIH07CiB9OwogCiBpbmxpbmUgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGEsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIGIpIHsgcmV0dXJuIFJlc291cmNlUmVzcG9uc2VCYXNlOjpjb21wYXJlKGEsIGIpOyB9
CkBAIC0yNzMsMTIgKzI3NywxMyBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjplbmNvZGUo
RW5jb2RlCiAgICAgaWYgKEVuY29kZXI6OmlzSVBDRW5jb2RlcikKICAgICAgICAgZW5jb2RlciA8
PCBtX25ldHdvcmtMb2FkTWV0cmljczsKIAotICAgIGVuY29kZXIgPDwgbV9odHRwU3RhdHVzQ29k
ZTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGludD4obV9odHRwU3RhdHVzQ29kZSk7CiAg
ICAgZW5jb2RlciA8PCBtX2NlcnRpZmljYXRlSW5mbzsKICAgICBlbmNvZGVyLmVuY29kZUVudW0o
bV9zb3VyY2UpOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShtX3R5cGUpOwogICAgIGVuY29kZXIu
ZW5jb2RlRW51bShtX3RhaW50aW5nKTsKLSAgICBlbmNvZGVyIDw8IG1faXNSZWRpcmVjdGVkOwor
ICAgIHVpbnQ4X3QgaXNSZWRpcmVjdGVkQW5kVXNlZExlZ2FjeVRMUyA9IChtX2lzUmVkaXJlY3Rl
ZCA/IDB4MSA6IDB4MCkgfCAobV91c2VkTGVnYWN5VExTID09IFVzZWRMZWdhY3lUTFM6OlllcyA/
IDB4MiA6IDB4MCk7CisgICAgZW5jb2RlciA8PCBpc1JlZGlyZWN0ZWRBbmRVc2VkTGVnYWN5VExT
OwogICAgIGVuY29kZXIgPDwgbV9pc1JhbmdlUmVxdWVzdGVkOwogfQogCkBAIC0zMTMsOCArMzE4
LDEwIEBAIGJvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmRlY29kZShEZWNvZGUKICAgICAvLyBU
aGUgbmV0d29ya0xvYWRNZXRyaWNzIGluZm8gaXMgb25seSBzZW5kIG92ZXIgSVBDIGFuZCBub3Qg
c3RvcmVkIGluIGRpc2sgY2FjaGUuCiAgICAgaWYgKERlY29kZXI6OmlzSVBDRGVjb2RlciAmJiAh
ZGVjb2Rlci5kZWNvZGUocmVzcG9uc2UubV9uZXR3b3JrTG9hZE1ldHJpY3MpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNwb25zZS5tX2h0dHBTdGF0
dXNDb2RlKSkKKyAgICBpbnQgaHR0cFN0YXR1c0NvZGU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShodHRwU3RhdHVzQ29kZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXNwb25zZS5t
X2h0dHBTdGF0dXNDb2RlID0gaHR0cFN0YXR1c0NvZGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXNwb25zZS5tX2NlcnRpZmljYXRlSW5mbykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShyZXNwb25zZS5tX3NvdXJjZSkpCkBAIC0zMjMsMTAg
KzMzMCwxMSBAQCBib29sIFJlc291cmNlUmVzcG9uc2VCYXNlOjpkZWNvZGUoRGVjb2RlCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShyZXNwb25zZS5t
X3RhaW50aW5nKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGJvb2wgaXNSZWRpcmVjdGVk
ID0gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShpc1JlZGlyZWN0ZWQpKQorICAgIHVp
bnQ4X3QgaXNSZWRpcmVjdGVkQW5kVXNlZExlZ2FjeVRMUyA9IDA7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShpc1JlZGlyZWN0ZWRBbmRVc2VkTGVnYWN5VExTKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIHJlc3BvbnNlLm1faXNSZWRpcmVjdGVkID0gaXNSZWRpcmVjdGVkOworICAgIHJl
c3BvbnNlLm1faXNSZWRpcmVjdGVkID0gaXNSZWRpcmVjdGVkQW5kVXNlZExlZ2FjeVRMUyAmIDB4
MTsKKyAgICByZXNwb25zZS5tX3VzZWRMZWdhY3lUTFMgPSAoaXNSZWRpcmVjdGVkQW5kVXNlZExl
Z2FjeVRMUyAmIDB4MikgPyBVc2VkTGVnYWN5VExTOjpZZXMgOiBVc2VkTGVnYWN5VExTOjpObzsK
IAogICAgIGJvb2wgaXNSYW5nZVJlcXVlc3RlZCA9IGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoaXNSYW5nZVJlcXVlc3RlZCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjU1NTgwKQor
KysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw3MCBA
QAorMjAyMC0wMi0wNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIEZpeCByYWNlIGNvbmRpdGlvbiBmb3IgV0tXZWJWaWV3Ll9uZWdvdGlhdGVk
TGVnYWN5VExTIHdoZW4gbG9hZGluZyBtYWluIHJlc291b3JjZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3MjA3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gUGFnZUxvYWRTdGF0ZTo6ZGlkQ29tbWl0
TG9hZCwgSSB3YXMgcmVzZXR0aW5nIHRoZSB2YWx1ZSBvZiBfbmVnb3RpYXRlZExlZ2FjeVRMUyB0
byBmYWxzZS4KKyAgICAgICAgVGhhdCBjcmVhdGVkIGEgcmFjZSBjb25kaXRpb24gd2hlbiBsb2Fk
aW5nIHRoZSBtYWluIHJlc291cmNlIGJlY2F1c2UgdGhlIE5ldHdvcmtQcm9jZXNzIHdvdWxkCisg
ICAgICAgIG1lc3NhZ2UgdGhlIFVJUHJvY2VzcyBzZXR0aW5nIF9uZWdvdGlhdGVkTGVnYWN5VExT
IHRvIGZhbHNlLCB3aGlsZSB0aGUgTmV0d29ya1Byb2Nlc3Mgd291bGQKKyAgICAgICAgbWVzc2Fn
ZSB0aGUgV2ViUHJvY2VzcyB3aGljaCB3b3VsZCBtZXNzYWdlIHRoZSBVSVByb2Nlc3MgdG8gY2Fs
bCBQYWdlTG9hZFN0YXRlOjpkaWRDb21taXRMb2FkCisgICAgICAgIHdoaWNoIHdvdWxkIHJlc2V0
IGl0IHRvIGZhbHNlLiAgTm93IGl0IHJlc2V0cyBpdCB0byB0aGUgY29ycmVjdCB2YWx1ZSwgd2hh
dGV2ZXIgaXQgaXMuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gbWFpbnRhaW4gYmluYXJ5IGNvbXBh
dGliaWxpdHkgd2l0aCBleGlzdGluZyBkaXNrIGNhY2hlcywgSSBidW5kbGUgdHdvIGJvb2xlYW5z
IHRvZ2V0aGVyCisgICAgICAgIHdoZW4gZW5jb2RpbmcuICBUaGlzIHJlc3VsdHMgaW4gZXhpc3Rp
bmcgZGlzayBjYWNoZXMgc2F5aW5nIHRoZXkgbG9hZGVkIG5vdGhpbmcgb3ZlciBsZWdhY3kgVExT
LAorICAgICAgICB3aGljaCBpcyBzb21ld2hhdCBjb3JyZWN0IGJlY2F1c2UgVExTIDEuMCBhbmQg
MS4xIHdlcmUgbm90IGRlcHJlY2F0ZWQgd2hlbiB0aGUgcmVzb3VyY2VzIHdlcmUgZmV0Y2hlZC4K
KyAgICAgICAgR29pbmcgZm9yd2FyZCwgdGhlIGJpdCB3aWxsIGJlIHNldCBhbmQgdGhlIGRpc2sg
Y2FjaGUgZW50cmllcyB3aWxsIHN0b3JlIHdoZXRoZXIgdGhleSB3ZXJlIGxvYWRlZAorICAgICAg
ICBvdmVyIGxlZ2FjeSBUTFMuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gbm90IGluY3JlYXNlIHRo
ZSBtZW1vcnkgZm9vdHByaW50IG9mIFJlc291cmNlUmVzcG9uc2UsIEkgY2hhbmdlZCBtX2h0dHBT
dGF0dXNDb2RlIGZyb20KKyAgICAgICAgYW4gaW50IHRvIGEgc2hvcnQuICBJdCBqdXN0IG5lZWRz
IHRvIGJlIGFibGUgdG8gY292ZXIgdGhlIHZhbHVlcyAwLTYwMCBvciBzbywgd2hpY2ggcmVhbGx5
IG9ubHkgbmVlZHMgMTAgYml0cy4KKworICAgICAgICBDb3ZlcmVkIGJ5IG5ldyBBUEkgdGVzdHMu
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJl
Y2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVm
bGlnaHRDaGVja2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNr
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6Om5lZ290aWF0ZWRMZWdhY3lU
TFMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFzay5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDbGllbnQ6Om5lZ290aWF0
ZWRMZWdhY3lUTFMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtEYXRhVGFza0Jsb2IuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tC
bG9iOjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6Om5vdGlmeURpZFJl
Y2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjp0aHJvdHRsZURl
bGF5Q29tcGxldGVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6Om5lZ290aWF0ZWRM
ZWdhY3lUTFMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQaW5nTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9QaW5nTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtE
YXRhVGFza0NvY29hLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjpk
aWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBV
UkxTZXNzaW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVSZXNwb25zZTpjb21wbGV0aW9uSGFuZGxlcjpd
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDdXJsOjppbnZva2VEaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNr
U291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmRpc3BhdGNo
RGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VMb2FkU3RhdGU6OmRpZENvbW1pdExvYWQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1By
b3Zpc2lvbmFsUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdl
UHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1Byb3Zp
c2lvbmFsUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKToKKwogMjAyMC0wMi0wMyAgU2Ft
IFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgU3RhcnQgc3BsaXR0aW5nIHBs
YXRmb3JtIHNwZWNpZmljIG92ZXJyaWRlcyBvZiBkZWZhdWx0IGVuYWJsZSBiZWhhdmlvciBpbnRv
IHRoZWlyIG93biBmaWxlcwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAkocmV2aXNpb24g
MjU1NTgwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZs
aWdodENoZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBO
ZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJlYwogICAgIG1fbmV0d29ya1Byb2Nlc3Mt
PmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShtX3BhcmFtZXRlcnMuc2Vzc2lvbklELCBtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIG1f
cGFyYW1ldGVycy50b3BPcmlnaW4gPyAmbV9wYXJhbWV0ZXJzLnRvcE9yaWdpbi0+ZGF0YSgpIDog
bnVsbHB0ciwgY2hhbGxlbmdlLCBuZWdvdGlhdGVkTGVnYWN5VExTLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNw
b25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtD
T1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiByZXNwb25zZSwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0
aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZSIpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgJ
KHJldmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0NPUlNQcmVmbGlnaHRDaGVja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJl
ZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hh
bGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdh
Y3lUTFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21w
bGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVy
cm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFs
Qnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwpJbmRl
eDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNw
cAkocmV2aXNpb24gMjU1NTgwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrRGF0YVRhc2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgTmV0
d29ya0RhdGFUYXNrOjpzY2hlZHVsZUZhaWx1cmUoRmEKICAgICBtX2ZhaWx1cmVUaW1lci5zdGFy
dE9uZVNob3QoMF9zKTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVSZXNw
b25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZl
UmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVkTGVnYWN5VExT
IG5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBpZiAocmVzcG9uc2UuaXNIVFRQMDkoKSkgewogICAgICAgICBh
dXRvIHVybCA9IHJlc3BvbnNlLnVybCgpOwpAQCAtMTExLDE3ICsxMTEsMTEgQEAgdm9pZCBOZXR3
b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZQogICAgICAgICB9CiAgICAgfQogICAgIGlm
IChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3Zl
KHJlc3BvbnNlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBtX2NsaWVu
dC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBuZWdvdGlhdGVkTGVnYWN5
VExTLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgZWxzZQogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Rh
dGFUYXNrOjpuZWdvdGlhdGVkTGVnYWN5VExTKCkgY29uc3QKLXsKLSAgICBpZiAobV9jbGllbnQp
Ci0gICAgICAgIG1fY2xpZW50LT5uZWdvdGlhdGVkTGVnYWN5VExTKCk7Ci19Ci0KIGJvb2wgTmV0
d29ya0RhdGFUYXNrOjpzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSBjb25z
dAogewogICAgIHJldHVybiBtX2NsaWVudCA/IG1fY2xpZW50LT5zaG91bGRDYXB0dXJlRXh0cmFO
ZXR3b3JrTG9hZE1ldHJpY3MoKSA6IGZhbHNlOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCShyZXZpc2lvbiAyNTU1ODApCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCSh3b3JraW5nIGNvcHkp
CkBAIC02Miw3ICs2Miw3IEBAIGNsYXNzIE5ldHdvcmtEYXRhVGFza0NsaWVudCB7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29t
cGxldGlvbkhhbmRsZXImJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2hhbGxl
bmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lU
TFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VD
b21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJl
c3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBj
b25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVz
RXhwZWN0ZWRUb1NlbmQpID0gMDsKQEAgLTcwLDcgKzcwLDYgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBjYW5ub3RTaG93VVJMKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3YXNCbG9ja2Vk
QnlSZXN0cmljdGlvbnMoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbmVnb3RpYXRlZExlZ2Fj
eVRMUygpIGNvbnN0IHsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3
b3JrTG9hZE1ldHJpY3MoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdm9pZCBkaWRD
b21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKQEAg
LTkyLDggKzkxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXN1bWUoKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVBbmRDYW5jZWwoKSA9IDA7CiAKLSAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXImJik7Ci0gICAgdm9pZCBuZWdvdGlhdGVkTGVnYWN5VExTKCkgY29uc3Q7
CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpOwogICAg
IGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkgY29uc3Q7CiAKICAg
ICBlbnVtIGNsYXNzIFN0YXRlIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAkocmV2aXNpb24gMjU1NTgwKQorKysg
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjkwLDcgKzI5MCw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6
ZGlzcGF0Y2hEaWRSZWMKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgZGlkUmVjZWl2ZVJl
c3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUo
cHJvdGVjdGVkVGhpcyksIGVycm9yQ29kZV0oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgewor
ICAgIGRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgTmVnb3RpYXRlZExlZ2Fj
eVRMUzo6Tm8sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwg
ZXJyb3JDb2RlXShQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKSB7CiAgICAgICAgIExPRyhOZXR3
b3JrU2Vzc2lvbiwgIiVwIC0gTmV0d29ya0RhdGFUYXNrQmxvYjo6ZGlkUmVjZWl2ZVJlc3BvbnNl
IGNvbXBsZXRpb25IYW5kbGVyICgldSkiLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocG9s
aWN5QWN0aW9uKSk7CiAKICAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNhbmNlbGluZyB8
fCBtX3N0YXRlID09IFN0YXRlOjpDb21wbGV0ZWQpIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCShyZXZpc2lvbiAyNTU1ODApCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjA2LDEyICsyMDYsNyBAQCB2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdl
KEF1CiAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShtX3Rhc2stPnNlc3Npb25JRCgpLCBtX3Bh
cmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIG1fcGFyYW1ldGVycy50b3BPcmlnaW4gPyAmbV9wYXJh
bWV0ZXJzLnRvcE9yaWdpbi0+ZGF0YSgpIDogbnVsbHB0ciwgY2hhbGxlbmdlLCBuZWdvdGlhdGVk
TGVnYWN5VExTLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29y
a0xvYWQ6Om5lZ290aWF0ZWRMZWdhY3lUTFMoKSBjb25zdAotewotICAgIG1fbmV0d29ya1Byb2Nl
c3MtPmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLm5lZ290aWF0ZWRMZWdhY3lUTFMobV9wYXJhbWV0
ZXJzLndlYlBhZ2VQcm94eUlEKTsKLX0KLQotdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFu
ZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgTmVnb3RpYXRlZExlZ2FjeVRMUyBu
ZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBBU1NFUlQo
IW1fdGhyb3R0bGUpOwpAQCAtMjI2LDE2ICsyMjEsMTkgQEAgdm9pZCBOZXR3b3JrTG9hZDo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKFJlcwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbm90aWZ5
RGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CisgICAgaWYgKG5lZ290aWF0ZWRMZWdhY3lUTFMgPT0gTmVnb3RpYXRlZExlZ2Fj
eVRMUzo6WWVzKQorICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5hdXRoZW50aWNhdGlvbk1hbmFn
ZXIoKS5uZWdvdGlhdGVkTGVnYWN5VExTKG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCk7Cisg
ICAgCisgICAgbm90aWZ5RGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBuZWdv
dGlhdGVkTGVnYWN5VExTLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQg
TmV0d29ya0xvYWQ6Om5vdGlmeURpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYg
cmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgTmV0d29ya0xvYWQ6Om5vdGlmeURpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0ZWRMZWdhY3lUTFMgbmVnb3RpYXRlZExlZ2FjeVRMUywg
UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICByZXNwb25zZS5zZXRTb3VyY2UoUmVzb3Vy
Y2VSZXNwb25zZTo6U291cmNlOjpOZXR3b3JrKTsKICAgICBpZiAobV9wYXJhbWV0ZXJzLm5lZWRz
Q2VydGlmaWNhdGVJbmZvKQotICAgICAgICByZXNwb25zZS5pbmNsdWRlQ2VydGlmaWNhdGVJbmZv
KCk7CisgICAgICAgIHJlc3BvbnNlLmluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8obmVnb3RpYXRlZExl
Z2FjeVRMUyA9PSBOZWdvdGlhdGVkTGVnYWN5VExTOjpZZXMgPyBVc2VkTGVnYWN5VExTOjpZZXMg
OiBVc2VkTGVnYWN5VExTOjpObyk7CiAKICAgICBtX2NsaWVudC5nZXQoKS5kaWRSZWNlaXZlUmVz
cG9uc2UoV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0K
QEAgLTI2NSw3ICsyNjMsNyBAQCB2b2lkIE5ldHdvcmtMb2FkOjp0aHJvdHRsZURlbGF5Q29tcGxl
dGVkCiAKICAgICBhdXRvIHRocm90dGxlID0gV1RGTW92ZShtX3Rocm90dGxlKTsKIAotICAgIG5v
dGlmeURpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHRocm90dGxlLT5yZXNwb25zZSksIFdURk1v
dmUodGhyb3R0bGUtPnJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBub3RpZnlEaWRS
ZWNlaXZlUmVzcG9uc2UoV1RGTW92ZSh0aHJvdHRsZS0+cmVzcG9uc2UpLCBOZWdvdGlhdGVkTGVn
YWN5VExTOjpObywgV1RGTW92ZSh0aHJvdHRsZS0+cmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcikp
OwogfQogCiB2b2lkIE5ldHdvcmtMb2FkOjpkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVz
U2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKQpJbmRleDogU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAkocmV2aXNpb24gMjU1NTgwKQorKysg
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCSh3b3JraW5nIGNvcHkp
CkBAIC03NCwxNiArNzQsMTUgQEAgcHJpdmF0ZToKICAgICAvLyBOZXR3b3JrRGF0YVRhc2tDbGll
bnQKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlv
bkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5n
ZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYm
KSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIm
JikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBm
aW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50
NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwogICAgIHZvaWQgd2FzQmxvY2tl
ZCgpIGZpbmFsOwogICAgIHZvaWQgY2Fubm90U2hvd1VSTCgpIGZpbmFsOwogICAgIHZvaWQgd2Fz
QmxvY2tlZEJ5UmVzdHJpY3Rpb25zKCkgZmluYWw7Ci0gICAgdm9pZCBuZWdvdGlhdGVkTGVnYWN5
VExTKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIG5vdGlmeURpZFJlY2VpdmVSZXNwb25zZShX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJik7
CisgICAgdm9pZCBub3RpZnlEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYp
OwogICAgIHZvaWQgdGhyb3R0bGVEZWxheUNvbXBsZXRlZCgpOwogCiAgICAgc3RkOjpyZWZlcmVu
Y2Vfd3JhcHBlcjxOZXR3b3JrTG9hZENsaWVudD4gbV9jbGllbnQ7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHJl
dmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDggQEAgY2xhc3MgTmV0
d29ya0xvYWRDaGVja2VyOwogY2xhc3MgU2VydmljZVdvcmtlckZldGNoVGFzazsKIGNsYXNzIFdl
YlNXU2VydmVyQ29ubmVjdGlvbjsKIAorZW51bSBjbGFzcyBOZWdvdGlhdGVkTGVnYWN5VExTIDog
Ym9vbDsKKwogc3RydWN0IFJlc291cmNlTG9hZEluZm87CiAKIG5hbWVzcGFjZSBOZXR3b3JrQ2Fj
aGUgewpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAJKHJl
dmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjAsNyArMTYwLDcgQEAgdm9pZCBQaW5nTG9hZDo6ZGlk
UmVjZWl2ZUNoYWxsZW5nZShBdXRoZQogICAgIGRpZEZpbmlzaChSZXNvdXJjZUVycm9yIHsgU3Ry
aW5nKCksIDAsIGN1cnJlbnRVUkwoKSwgIkZhaWxlZCBIVFRQIGF1dGhlbnRpY2F0aW9uIl9zLCBS
ZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9sIH0pOwogfQogCi12b2lkIFBpbmdMb2Fk
OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNwb25z
ZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFBpbmdMb2FkOjpk
aWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVk
TGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlIC0gaHR0
cFN0YXR1c0NvZGU6ICVkIiwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7CiAgICAgYXV0byB3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUGluZ0xvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1BpbmdMb2FkLmgJKHJldmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENv
bXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShX
ZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBD
aGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhh
bmRsZXImJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25I
YW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRy
aWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2Vu
dCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLmgJKHJldmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAkod29ya2luZyBjb3B5KQpAQCAtNTQs
NyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5
dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVn
b3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJik7CiAgICAgdm9p
ZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29u
c3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5k
bGVyJiYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYm
KTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYp
OwogCiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRp
b25IYW5kbGVyJiYpOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCShyZXZpc2lvbiAyNTU1ODAp
CisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0Nv
Y29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNzMsMTAgKzM3MywxMCBAQCB2b2lkIE5ldHdvcmtE
YXRhVGFza0NvY29hOjpkaWRSZWNlaXZlRGF0CiAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZl
RGF0YShXVEZNb3ZlKGRhdGEpKTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgV2Vi
S2l0OjpSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVkTGVnYWN5VExTIG5lZ290aWF0ZWRMZWdh
Y3lUTFMsIFdlYktpdDo6UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIEVNSVRfU0lHTlBPU1QobV90YXNrLCAicmVjZWl2ZWQgcmVzcG9uc2UgaGVh
ZGVycyIpOwotICAgIE5ldHdvcmtEYXRhVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUo
cmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgTmV0d29ya0RhdGFU
YXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSksIG5lZ290aWF0ZWRMZWdh
Y3lUTFMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrRGF0
YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2Nv
YS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtTZXNzaW9uQ29jb2EubW0JKHJldmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQkod29ya2luZyBjb3B5
KQpAQCAtODE4LDI0ICs4MTgsMjIgQEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24g
KilzZXNzaQogICAgIGlmIChhdXRvKiBuZXR3b3JrRGF0YVRhc2sgPSBbc2VsZiBleGlzdGluZ1Rh
c2s6ZGF0YVRhc2tdKSB7CiAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAg
ICAgICAgYm9vbCBuZWdvdGlhdGVkTGVnYWN5VExTID0gZmFsc2U7CisgICAgICAgIE5lZ290aWF0
ZWRMZWdhY3lUTFMgbmVnb3RpYXRlZExlZ2FjeVRMUyA9IE5lZ290aWF0ZWRMZWdhY3lUTFM6Ok5v
OwogI2lmIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkKICAgICAgICAgTlNVUkxTZXNzaW9u
VGFza1RyYW5zYWN0aW9uTWV0cmljcyAqbWV0cmljcyA9IGRhdGFUYXNrLl9pbmNvbXBsZXRlVGFz
a01ldHJpY3MudHJhbnNhY3Rpb25NZXRyaWNzLmxhc3RPYmplY3Q7CiAgICAgICAgIGF1dG8gdGxz
VmVyc2lvbiA9ICh0bHNfcHJvdG9jb2xfdmVyc2lvbl90KW1ldHJpY3MubmVnb3RpYXRlZFRMU1By
b3RvY29sVmVyc2lvbi51bnNpZ25lZFNob3J0VmFsdWU7CiAgICAgICAgIGlmICh0bHNWZXJzaW9u
ID09IHRsc19wcm90b2NvbF92ZXJzaW9uX1RMU3YxMCB8fCB0bHNWZXJzaW9uID09IHRsc19wcm90
b2NvbF92ZXJzaW9uX1RMU3YxMSkKLSAgICAgICAgICAgIG5lZ290aWF0ZWRMZWdhY3lUTFMgPSB0
cnVlOworICAgICAgICAgICAgbmVnb3RpYXRlZExlZ2FjeVRMUyA9IE5lZ290aWF0ZWRMZWdhY3lU
TFM6OlllczsKICAgICAgICAgVU5VU0VEX1BBUkFNKG1ldHJpY3MpOwogI2Vsc2UgLy8gV2UgZG8g
bm90IG5lZWQgdG8gY2hlY2sgX1RMU05lZ290aWF0ZWRQcm90b2NvbFZlcnNpb24gaWYgd2UgaGF2
ZSBtZXRyaWNzLm5lZ290aWF0ZWRUTFNQcm90b2NvbFZlcnNpb24gYmVjYXVzZSBpdCB3b3JrcyBh
dCByZXNwb25zZSB0aW1lIGV2ZW4gYmVmb3JlIHJkYXI6Ly9wcm9ibGVtLzU2NTIyNjAxCiAgICAg
ICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgIGlmIChbZGF0
YVRhc2sgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfVExTTmVnb3RpYXRlZFByb3RvY29s
VmVyc2lvbildKSB7CiAgICAgICAgICAgICBTU0xQcm90b2NvbCB0bHNWZXJzaW9uID0gW2RhdGFU
YXNrIF9UTFNOZWdvdGlhdGVkUHJvdG9jb2xWZXJzaW9uXTsKICAgICAgICAgICAgIGlmICh0bHNW
ZXJzaW9uID09IGtUTFNQcm90b2NvbDExIHx8IHRsc1ZlcnNpb24gPT0ga1RMU1Byb3RvY29sMSkK
LSAgICAgICAgICAgICAgICBuZWdvdGlhdGVkTGVnYWN5VExTID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICBuZWdvdGlhdGVkTGVnYWN5VExTID0gTmVnb3RpYXRlZExlZ2FjeVRMUzo6WWVzOwogICAg
ICAgICB9CiAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogI2VuZGlm
Ci0gICAgICAgIGlmIChuZWdvdGlhdGVkTGVnYWN5VExTKQotICAgICAgICAgICAgbmV0d29ya0Rh
dGFUYXNrLT5uZWdvdGlhdGVkTGVnYWN5VExTKCk7CiAgICAgICAgIAogICAgICAgICAvLyBBdm9p
ZCBNSU1FIHR5cGUgc25pZmZpbmcgaWYgdGhlIHJlc3BvbnNlIGNvbWVzIGJhY2sgYXMgMzA0IE5v
dCBNb2RpZmllZC4KICAgICAgICAgaW50IHN0YXR1c0NvZGUgPSBbcmVzcG9uc2UgaXNLaW5kT2ZD
bGFzczpOU0hUVFBVUkxSZXNwb25zZS5jbGFzc10gPyBbKE5TSFRUUFVSTFJlc3BvbnNlICopcmVz
cG9uc2Ugc3RhdHVzQ29kZV0gOiAwOwpAQCAtODU0LDcgKzg1Miw3IEBAIC0gKHZvaWQpVVJMU2Vz
c2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2kKICAgICAgICAgY29weVRpbWluZ0RhdGEoW2RhdGFU
YXNrIF90aW1pbmdEYXRhXSwgcmVzb3VyY2VSZXNwb25zZS5kZXByZWNhdGVkTmV0d29ya0xvYWRN
ZXRyaWNzKCkpOwogCiAgICAgICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXJDb3B5ID0gQmxvY2tf
Y29weShjb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgICAgIG5ldHdvcmtEYXRhVGFzay0+ZGlkUmVj
ZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzb3VyY2VSZXNwb25zZSksIFtjb21wbGV0aW9uSGFuZGxl
ckNvcHksIHRhc2tJZGVudGlmaWVyXShXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9u
KSB7CisgICAgICAgIG5ldHdvcmtEYXRhVGFzay0+ZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUo
cmVzb3VyY2VSZXNwb25zZSksIG5lZ290aWF0ZWRMZWdhY3lUTFMsIFtjb21wbGV0aW9uSGFuZGxl
ckNvcHksIHRhc2tJZGVudGlmaWVyXShXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9u
KSB7CiAjaWYgIUxPR19ESVNBQkxFRAogICAgICAgICAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAi
JWxsdSBkaWRSZWNlaXZlUmVzcG9uc2UgY29tcGxldGlvbkhhbmRsZXIgKCVkKSIsIHRhc2tJZGVu
dGlmaWVyLCBwb2xpY3lBY3Rpb24pOwogI2Vsc2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAJKHJl
dmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3
b3JrRGF0YVRhc2tDdXJsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI0LDcgKzIyNCw3IEBAIGJv
b2wgTmV0d29ya0RhdGFUYXNrQ3VybDo6c2hvdWxkUmVkaXJlY3QKIAogdm9pZCBOZXR3b3JrRGF0
YVRhc2tDdXJsOjppbnZva2VEaWRSZWNlaXZlUmVzcG9uc2UoKQogewotICAgIGRpZFJlY2VpdmVS
ZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlKG1fcmVzcG9uc2UpLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpXShQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKSB7CisgICAgZGlk
UmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UobV9yZXNwb25zZSksIE5lZ290aWF0ZWRM
ZWdhY3lUTFM6Ok5vLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShQb2xp
Y3lBY3Rpb24gcG9saWN5QWN0aW9uKSB7CiAgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpD
YW5jZWxpbmcgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6Q29tcGxldGVkKQogICAgICAgICAgICAgcmV0
dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0Rh
dGFUYXNrU291cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCShyZXZpc2lvbiAyNTU1ODApCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM3OCw3ICszNzgsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6
OmRpc3BhdGNoRGlkUmVjCiAgICAgZGVwcmVjYXRlZFJlc3BvbnNlTWV0cmljcy5yZXF1ZXN0U3Rh
cnQgPSBtX25ldHdvcmtMb2FkTWV0cmljcy5yZXF1ZXN0U3RhcnQ7CiAgICAgZGVwcmVjYXRlZFJl
c3BvbnNlTWV0cmljcy5yZXNwb25zZVN0YXJ0ID0gbV9uZXR3b3JrTG9hZE1ldHJpY3MucmVzcG9u
c2VTdGFydDsKIAotICAgIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlKG1fcmVz
cG9uc2UpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShQb2xpY3lBY3Rp
b24gcG9saWN5QWN0aW9uKSB7CisgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9u
c2UobV9yZXNwb25zZSksIE5lZ290aWF0ZWRMZWdhY3lUTFM6Ok5vLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpXShQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKSB7CiAgICAg
ICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDYW5jZWxpbmcgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6
Q29tcGxldGVkKSB7CiAgICAgICAgICAgICBjbGVhclJlcXVlc3QoKTsKICAgICAgICAgICAgIHJl
dHVybjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuY3BwCShy
ZXZpc2lvbiAyNTU1ODApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE3LDcgKzMxNyw3IEBAIHZvaWQgUGFnZUxvYWRTdGF0
ZTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG8KICAgICBtX3VuY29tbWl0dGVkU3RhdGUudW5yZWFjaGFi
bGVVUkwgPSBtX2xhc3RVbnJlYWNoYWJsZVVSTDsKIH0KIAotdm9pZCBQYWdlTG9hZFN0YXRlOjpk
aWRDb21taXRMb2FkKGNvbnN0IFRyYW5zYWN0aW9uOjpUb2tlbiYgdG9rZW4sIFdlYkNlcnRpZmlj
YXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBib29sIGhhc0luc2VjdXJlQ29udGVudCkKK3ZvaWQg
UGFnZUxvYWRTdGF0ZTo6ZGlkQ29tbWl0TG9hZChjb25zdCBUcmFuc2FjdGlvbjo6VG9rZW4mIHRv
a2VuLCBXZWJDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCBoYXNJbnNlY3Vy
ZUNvbnRlbnQsIGJvb2wgdXNlZExlZ2FjeVRMUykKIHsKICAgICBBU1NFUlRfVU5VU0VEKHRva2Vu
LCAmdG9rZW4ubV9wYWdlTG9hZFN0YXRlID09IHRoaXMpOwogICAgIEFTU0VSVChtX3VuY29tbWl0
dGVkU3RhdGUuc3RhdGUgPT0gU3RhdGU6OlByb3Zpc2lvbmFsKTsKQEAgLTMyOCw3ICszMjgsNyBA
QCB2b2lkIFBhZ2VMb2FkU3RhdGU6OmRpZENvbW1pdExvYWQoY29uc3QgCiAKICAgICBtX3VuY29t
bWl0dGVkU3RhdGUudXJsID0gbV91bmNvbW1pdHRlZFN0YXRlLnByb3Zpc2lvbmFsVVJMOwogICAg
IG1fdW5jb21taXR0ZWRTdGF0ZS5wcm92aXNpb25hbFVSTCA9IFN0cmluZygpOwotICAgIG1fdW5j
b21taXR0ZWRTdGF0ZS5uZWdvdGlhdGVkTGVnYWN5VExTID0gZmFsc2U7CisgICAgbV91bmNvbW1p
dHRlZFN0YXRlLm5lZ290aWF0ZWRMZWdhY3lUTFMgPSB1c2VkTGVnYWN5VExTOwogCiAgICAgbV91
bmNvbW1pdHRlZFN0YXRlLnRpdGxlID0gU3RyaW5nKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5oCShyZXZpc2lvbiAyNTU1ODApCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw3ICsx
NjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92
aXNpb25hbExvYWQoY29uc3QgVHJhbnNhY3Rpb246OlRva2VuJiwgY29uc3QgU3RyaW5nJiB1cmwp
OwogICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBUcmFuc2FjdGlvbjo6VG9r
ZW4mKTsKIAotICAgIHZvaWQgZGlkQ29tbWl0TG9hZChjb25zdCBUcmFuc2FjdGlvbjo6VG9rZW4m
LCBXZWJDZXJ0aWZpY2F0ZUluZm8mLCBib29sIGhhc0luc2VjdXJlQ29udGVudCk7CisgICAgdm9p
ZCBkaWRDb21taXRMb2FkKGNvbnN0IFRyYW5zYWN0aW9uOjpUb2tlbiYsIFdlYkNlcnRpZmljYXRl
SW5mbyYsIGJvb2wgaGFzSW5zZWN1cmVDb250ZW50LCBib29sIHVzZWRMZWdhY3lUTFMpOwogICAg
IHZvaWQgZGlkRmluaXNoTG9hZChjb25zdCBUcmFuc2FjdGlvbjo6VG9rZW4mKTsKICAgICB2b2lk
IGRpZEZhaWxMb2FkKGNvbnN0IFRyYW5zYWN0aW9uOjpUb2tlbiYpOwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCShyZXZpc2lv
biAyNTU1ODApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIFByb3Zpc2lvbmFs
UGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzCiAgICAgbV9wYWdlLmRpZEZhaWxQcm92aXNpb25hbExv
YWRGb3JGcmFtZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBmcmFtZUlELCBXVEZNb3ZlKGZy
YW1lU2VjdXJpdHlPcmlnaW4pLCBuYXZpZ2F0aW9uSUQsIHByb3Zpc2lvbmFsVVJMLCBlcnJvciwg
d2lsbENvbnRpbnVlTG9hZGluZywgdXNlckRhdGEpOyAvLyBNYXkgZGVsZXRlIHx0aGlzfC4KIH0K
IAotdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZy
YW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJ
bmZvLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0lu
c2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYg
dXNlckRhdGEpCit2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJh
bWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWlu
dDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0
aWZpY2F0ZUluZm8sIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250YWluc1BsdWdpbkRvY3Vt
ZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2Vj
dXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIGlmICghdmFsaWRh
dGVJbnB1dChmcmFtZUlELCBuYXZpZ2F0aW9uSUQpKQogICAgICAgICByZXR1cm47CkBAIC0yNzQs
NyArMjc0LDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZAogICAg
IG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlSUQpOwogCiAgICAgbV93YXNDb21taXR0
ZWQgPSB0cnVlOwotICAgIG1fcGFnZS5jb21taXRQcm92aXNpb25hbFBhZ2UoZnJhbWVJRCwgbmF2
aWdhdGlvbklELCBtaW1lVHlwZSwgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIGZyYW1l
TG9hZFR5cGUsIGNlcnRpZmljYXRlSW5mbywgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgZm9yY2Vk
SGFzSW5zZWN1cmVDb250ZW50LCB1c2VyRGF0YSk7IC8vIFdpbGwgZGVsZXRlIHx0aGlzfC4KKyAg
ICBtX3BhZ2UuY29tbWl0UHJvdmlzaW9uYWxQYWdlKGZyYW1lSUQsIG5hdmlnYXRpb25JRCwgbWlt
ZVR5cGUsIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBmcmFtZUxvYWRUeXBlLCBjZXJ0
aWZpY2F0ZUluZm8sIHVzZWRMZWdhY3lUTFMsIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIGZvcmNl
ZEhhc0luc2VjdXJlQ29udGVudCwgdXNlckRhdGEpOyAvLyBXaWxsIGRlbGV0ZSB8dGhpc3wuCiB9
CiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25E
YXRhKGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmIHN0b3JlLCBGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQ
YWdlUHJveHkuaAkocmV2aXNpb24gMjU1NTgwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UHJvdmlzaW9uYWxQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDcgKzEyMiw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcsIFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRDcmVhdGVNYWluRnJhbWUoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IFVSTCYmLCBVUkwmJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmKTsKLSAgICB2b2lk
IGRpZENvbW1pdExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3Rv
bUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6
Q2VydGlmaWNhdGVJbmZvJiwgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxX
ZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgY29u
c3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRpZENvbW1pdExvYWRGb3JGcmFtZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVM
b2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiwgYm9vbCB1c2VkTGVnYWN5
VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0lu
c2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYp
OwogICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9y
aWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJM
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgV2ViQ29yZTo6V2lsbENvbnRpbnVlTG9h
ZGluZywgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIHN0YXJ0VVJMU2NoZW1lVGFzayhVUkxT
Y2hlbWVUYXNrUGFyYW1ldGVycyYmKTsKICAgICB2b2lkIGJhY2tGb3J3YXJkR29Ub0l0ZW0oY29u
c3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIGNvbnN0IFdlYkJhY2tGb3J3YXJkTGlz
dENvdW50cyYpPiYmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAkocmV2aXNpb24gMjU1NTgwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE1Nyw3ICszMTU3LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpbwogICAgIHNlbmRlci0+c2VuZChhY3Rpb24s
IG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSA6IDAsIGRvd25sb2FkSUQs
IFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpjb21t
aXRQcm92aXNpb25hbFBhZ2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRl
bnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlm
aWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwg
T3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNv
bnRlbnQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpjb21t
aXRQcm92aXNpb25hbFBhZ2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRl
bnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlm
aWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250
YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+
IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewog
ICAgIEFTU0VSVChtX3Byb3Zpc2lvbmFsUGFnZSk7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAiY29tbWl0UHJvdmlzaW9uYWxQYWdlOiBuZXdQSUQgPSAlaSIsIG1fcHJvdmlz
aW9uYWxQYWdlLT5wcm9jZXNzKCkucHJvY2Vzc0lkZW50aWZpZXIoKSk7CkBAIC0zMTkxLDcgKzMx
OTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlCiAgICAgY29u
c3QgYXV0byBvbGRXZWJQYWdlSUQgPSBtX3dlYlBhZ2VJRDsKICAgICBzd2FwVG9Qcm92aXNpb25h
bFBhZ2Uoc3RkOjpleGNoYW5nZShtX3Byb3Zpc2lvbmFsUGFnZSwgbnVsbHB0cikpOwogCi0gICAg
ZGlkQ29tbWl0TG9hZEZvckZyYW1lKGZyYW1lSUQsIG5hdmlnYXRpb25JRCwgbWltZVR5cGUsIGZy
YW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBmcmFtZUxvYWRUeXBlLCBjZXJ0aWZpY2F0ZUlu
Zm8sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgdXNl
ckRhdGEpOworICAgIGRpZENvbW1pdExvYWRGb3JGcmFtZShmcmFtZUlELCBuYXZpZ2F0aW9uSUQs
IG1pbWVUeXBlLCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgZnJhbWVMb2FkVHlwZSwg
Y2VydGlmaWNhdGVJbmZvLCB1c2VkTGVnYWN5VExTLCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBm
b3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIHVzZXJEYXRhKTsKIAogICAgIG1faW5zcGVjdG9yQ29u
dHJvbGxlci0+ZGlkQ29tbWl0UHJvdmlzaW9uYWxQYWdlKG9sZFdlYlBhZ2VJRCwgbV93ZWJQYWdl
SUQpOwogfQpAQCAtNDQ3Nyw3ICs0NDc3LDcgQEAgc3RhdGljIE9wdGlvblNldDxDcm9zc1NpdGVO
YXZpZ2F0aW9uRGF0YQogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRM
b2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92
aWRlciwgdWludDMyX3Qgb3BhcXVlRnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlm
aWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwg
T3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50PiBoYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVz
ZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJh
bWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWlu
dDMyX3Qgb3BhcXVlRnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZv
JiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250YWluc1BsdWdp
bkRvY3VtZW50LCBPcHRpb25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+IGhhc0luc2VjdXJlQ29udGVu
dCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIExPRyhMb2FkaW5nLCAiKExvYWRp
bmcpIFdlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBkaWRDb21taXRMb2FkRm9yRnJhbWUgaW4gbmF2
aWdhdGlvbiAlIiBQUkl1NjQsIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uSUQp
OwogICAgIExPRyhCYWNrRm9yd2FyZCwgIihCYWNrL0ZvcndhcmQpIEFmdGVyIGxvYWQgY29tbWl0
LCBiYWNrL2ZvcndhcmQgbGlzdCBpcyBub3c6JXMiLCBtX2JhY2tGb3J3YXJkTGlzdC0+bG9nZ2lu
Z1N0cmluZygpKTsKQEAgLTQ1MTksNyArNDUxOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRD
b21taXRMb2FkRm9yRnJhbWUKICAgICBib29sIG1hcmtQYWdlSW5zZWN1cmUgPSBoYXNJbnNlY3Vy
ZUNvbnRlbnQgPyBoYXNJbnNlY3VyZUNvbnRlbnQudmFsdWUoKSA9PSBIYXNJbnNlY3VyZUNvbnRl
bnQ6OlllcyA6IG1fdHJlYXRzU0hBMUNlcnRpZmljYXRlc0FzSW5zZWN1cmUgJiYgY2VydGlmaWNh
dGVJbmZvLmNvbnRhaW5zTm9uUm9vdFNIQTFTaWduZWRDZXJ0aWZpY2F0ZSgpOwogCiAgICAgaWYg
KGZyYW1lLT5pc01haW5GcmFtZSgpKSB7Ci0gICAgICAgIG1fcGFnZUxvYWRTdGF0ZS5kaWRDb21t
aXRMb2FkKHRyYW5zYWN0aW9uLCB3ZWJDZXJ0aWZpY2F0ZUluZm8sIG1hcmtQYWdlSW5zZWN1cmUp
OworICAgICAgICBtX3BhZ2VMb2FkU3RhdGUuZGlkQ29tbWl0TG9hZCh0cmFuc2FjdGlvbiwgd2Vi
Q2VydGlmaWNhdGVJbmZvLCBtYXJrUGFnZUluc2VjdXJlLCB1c2VkTGVnYWN5VExTKTsKICAgICAg
ICAgbV9zaG91bGRTdXBwcmVzc05leHRBdXRvbWF0aWNOYXZpZ2F0aW9uU25hcHNob3QgPSBmYWxz
ZTsKICAgICB9IGVsc2UgaWYgKG1hcmtQYWdlSW5zZWN1cmUpCiAgICAgICAgIG1fcGFnZUxvYWRT
dGF0ZS5kaWREaXNwbGF5T3JSdW5JbnNlY3VyZUNvbnRlbnQodHJhbnNhY3Rpb24pOwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI1NTU4MCkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTg2LDcgKzE1ODYsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIFByb3Zpc2lvbmFsUGFn
ZVByb3h5KiBwcm92aXNpb25hbFBhZ2VQcm94eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdmlzaW9u
YWxQYWdlLmdldCgpOyB9Ci0gICAgdm9pZCBjb21taXRQcm92aXNpb25hbFBhZ2UoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1l
TG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYsIGJvb2wgY29udGFpbnNQ
bHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3Jj
ZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBjb21taXRQ
cm92aXNpb25hbFBhZ2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50
UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmlj
YXRlSW5mbyYsIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50
LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJl
Q29udGVudCwgY29uc3QgVXNlckRhdGEmKTsKIAogICAgIC8vIExvZ2ljIHNoYXJlZCBiZXR3ZWVu
IHRoZSBXZWJQYWdlUHJveHkgYW5kIHRoZSBQcm92aXNpb25hbFBhZ2VQcm94eS4KICAgICB2b2lk
IGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94
eT4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVS
TCYmLCBVUkwmJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmKTsKQEAgLTE3MzYsNyAr
MTczNiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZy
YW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRDaGFuZ2VQcm92aXNp
b25hbFVSTEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBVUkwmJik7CiAgICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBm
cmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYg
cHJvdmlzaW9uYWxVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBXZWJDb3JlOjpX
aWxsQ29udGludWVMb2FkaW5nLCBjb25zdCBVc2VyRGF0YSYpOwotICAgIHZvaWQgZGlkQ29tbWl0
TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFBy
b3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0
ZUluZm8mLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhh
c0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0
YSYpOworICAgIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29s
IGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBj
b25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mLCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wg
Y29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250
ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9p
ZCBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZEZp
bmlzaExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZEZhaWxMb2FkRm9yRnJhbWUo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBVc2VyRGF0YSYpOwpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24g
MjU1NTgwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNyArMTI2LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZVByb3h5IHsKICAgICBEaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciBmcmFtZUlEKQogICAgIERpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJh
bWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgVVJMIHVybCkKICAgICBEaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBTdHJpbmcgcHJv
dmlzaW9uYWxVUkwsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIGVudW06Ym9vbCBXZWJD
b3JlOjpXaWxsQ29udGludWVMb2FkaW5nIHdpbGxDb250aW51ZUxvYWRpbmcsIFdlYktpdDo6VXNl
ckRhdGEgdXNlckRhdGEpCi0gICAgRGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFN0cmluZyBtaW1lVHlw
ZSwgYm9vbCBoYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGxvYWRUeXBlLCBXZWJD
b3JlOjpDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvLCBib29sIGNvbnRhaW5zUGx1Z2lu
RG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFz
SW5zZWN1cmVDb250ZW50LCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQorICAgIERpZENvbW1p
dExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBTdHJpbmcgbWltZVR5cGUsIGJvb2wgaGFzQ3VzdG9tQ29udGVudFByb3Zp
ZGVyLCB1aW50MzJfdCBsb2FkVHlwZSwgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvIGNlcnRpZmlj
YXRlSW5mbywgYm9vbCB1c2VkTGVnYWN5VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQs
IE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVD
b250ZW50LCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIERpZEZhaWxMb2FkRm9yRnJh
bWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0
YSkKICAgICBEaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJLaXQ6OlVzZXJEYXRhIHVz
ZXJEYXRhKQogICAgIERpZEZpbmlzaExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJE
YXRhKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAyNTU1
ODApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NjAsNyArNTYwLDcgQEAgdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDbwogICAgIHdlYlBhZ2UtPnNhbmRib3hF
eHRlbnNpb25UcmFja2VyKCkuZGlkQ29tbWl0UHJvdmlzaW9uYWxMb2FkKG1fZnJhbWUpOwogCiAg
ICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCi0gICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpEaWRDb21taXRMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBk
b2N1bWVudExvYWRlci5uYXZpZ2F0aW9uSUQoKSwgZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKS5t
aW1lVHlwZSgpLCBtX2ZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBzdGF0aWNfY2FzdDx1
aW50MzJfdD4obV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmxvYWRUeXBlKCkpLCB2YWx1
ZU9yQ29tcHV0ZShkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLmNlcnRpZmljYXRlSW5mbygpLCBb
XSB7IHJldHVybiBDZXJ0aWZpY2F0ZUluZm8oKTsgfSksIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5k
b2N1bWVudCgpLT5pc1BsdWdpbkRvY3VtZW50KCksIGhhc0luc2VjdXJlQ29udGVudCwgVXNlckRh
dGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2Vy
RGF0YS5nZXQoKSkuZ2V0KCkpKSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEaWRDb21taXRMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBkb2N1bWVu
dExvYWRlci5uYXZpZ2F0aW9uSUQoKSwgZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKS5taW1lVHlw
ZSgpLCBtX2ZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBzdGF0aWNfY2FzdDx1aW50MzJf
dD4obV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmxvYWRUeXBlKCkpLCB2YWx1ZU9yQ29t
cHV0ZShkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLmNlcnRpZmljYXRlSW5mbygpLCBbXSB7IHJl
dHVybiBDZXJ0aWZpY2F0ZUluZm8oKTsgfSksIGRvY3VtZW50TG9hZGVyLnJlc3BvbnNlKCkudXNl
ZExlZ2FjeVRMUygpLCBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKS0+aXNQbHVnaW5E
b2N1bWVudCgpLCBoYXNJbnNlY3VyZUNvbnRlbnQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkp
OwogICAgIHdlYlBhZ2UtPmRpZENvbW1pdExvYWQobV9mcmFtZSk7CiB9CiAKSW5kZXg6IFRvb2xz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NTY4
MikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisy
MDIwLTAyLTA0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgRml4IHJhY2UgY29uZGl0aW9uIGZvciBXS1dlYlZpZXcuX25lZ290aWF0ZWRMZWdh
Y3lUTFMgd2hlbiBsb2FkaW5nIG1haW4gcmVzb3VvcmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcyMDcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIVFRQU2VydmVyIG5vdyBzdXBwb3J0cyBIVFRQUy4g
VGVsbCB5b3VyIGZyaWVuZHMhCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0NoYWxsZW5nZS5tbToKKyAgICAgICAgKHRlc3RDZXJ0aWZpY2F0ZSk6CisgICAgICAg
ICh0ZXN0SWRlbnRpdHkpOgorICAgICAgICAoY3JlZGVudGlhbFdpdGhJZGVudGl0eSk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UTFNEZXByZWNhdGlvbi5tbToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OndlYlZpZXdXaXRoTmF2aWdhdGlvbkRlbGVnYXRlKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
Y29jb2EvSFRUUFNlcnZlci5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNl
cnZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OkhUVFBTZXJ2ZXIp
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6cmVxdWVzdCBjb25zdCk6CisK
IDIwMjAtMDItMDQgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAg
ICAgICAgIFtDTWFrZV0gQWRkIENhaXJvOjpDYWlybyB0YXJnZXQKSW5kZXg6IFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2hhbGxlbmdlLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2hhbGxlbmdlLm1tCShyZXZpc2lv
biAyNTU1ODApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NoYWxs
ZW5nZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogCiAjaW1wb3J0ICJjb25m
aWcuaCIKIAorI2ltcG9ydCAiSFRUUFNlcnZlci5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRp
ZXMuaCIKICNpbXBvcnQgIlRDUFNlcnZlci5oIgogI2ltcG9ydCAiVGVzdC5oIgpAQCAtNDMsMTEg
KzQ0LDE0IEBACiAKIHN0YXRpYyBib29sIG5hdmlnYXRpb25GaW5pc2hlZDsKIAotc3RhdGljIFJl
dGFpblB0cjxOU1VSTENyZWRlbnRpYWw+IGNyZWRlbnRpYWxXaXRoSWRlbnRpdHkoKQorc3RhdGlj
IFJldGFpblB0cjxTZWNDZXJ0aWZpY2F0ZVJlZj4gdGVzdENlcnRpZmljYXRlKCkKIHsKICAgICBh
dXRvIGNlcnRpZmljYXRlQnl0ZXMgPSBUZXN0V2ViS2l0QVBJOjpUQ1BTZXJ2ZXI6OnRlc3RDZXJ0
aWZpY2F0ZSgpOwotICAgIGF1dG8gY2VydGlmaWNhdGUgPSBhZG9wdENGKFNlY0NlcnRpZmljYXRl
Q3JlYXRlV2l0aERhdGEobnVsbHB0ciwgKF9fYnJpZGdlIENGRGF0YVJlZilbTlNEYXRhIGRhdGFX
aXRoQnl0ZXM6Y2VydGlmaWNhdGVCeXRlcy5kYXRhKCkgbGVuZ3RoOmNlcnRpZmljYXRlQnl0ZXMu
c2l6ZSgpXSkpOwotICAgIAorICAgIHJldHVybiBhZG9wdENGKFNlY0NlcnRpZmljYXRlQ3JlYXRl
V2l0aERhdGEobnVsbHB0ciwgKF9fYnJpZGdlIENGRGF0YVJlZilbTlNEYXRhIGRhdGFXaXRoQnl0
ZXM6Y2VydGlmaWNhdGVCeXRlcy5kYXRhKCkgbGVuZ3RoOmNlcnRpZmljYXRlQnl0ZXMuc2l6ZSgp
XSkpOworfQorCitSZXRhaW5QdHI8U2VjSWRlbnRpdHlSZWY+IHRlc3RJZGVudGl0eSgpCit7CiAg
ICAgYXV0byBwcml2YXRlS2V5Qnl0ZXMgPSBUZXN0V2ViS2l0QVBJOjpUQ1BTZXJ2ZXI6OnRlc3RQ
cml2YXRlS2V5KCk7CiAgICAgTlNEYXRhICpkZXJFbmNvZGVkUHJpdmF0ZUtleSA9IFtOU0RhdGEg
ZGF0YVdpdGhCeXRlczpwcml2YXRlS2V5Qnl0ZXMuZGF0YSgpIGxlbmd0aDpwcml2YXRlS2V5Qnl0
ZXMuc2l6ZSgpXTsKICAgICBOU0RpY3Rpb25hcnkqIG9wdGlvbnMgPSBAewpAQCAtNjEsMTAgKzY1
LDE1IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNVUkxDcmVkZW50aWFsPiBjcmVkZW4KICAgICBFWFBF
Q1RfTlVMTChlcnJvcik7CiAgICAgRVhQRUNUX05PVF9OVUxMKHByaXZhdGVLZXkuZ2V0KCkpOwog
Ci0gICAgYXV0byBpZGVudGl0eSA9IGFkb3B0Q0YoU2VjSWRlbnRpdHlDcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgY2VydGlmaWNhdGUuZ2V0KCksIHByaXZhdGVLZXkuZ2V0KCkpKTsKKyAgICBy
ZXR1cm4gYWRvcHRDRihTZWNJZGVudGl0eUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB0ZXN0
Q2VydGlmaWNhdGUoKS5nZXQoKSwgcHJpdmF0ZUtleS5nZXQoKSkpOworfQorCitzdGF0aWMgUmV0
YWluUHRyPE5TVVJMQ3JlZGVudGlhbD4gY3JlZGVudGlhbFdpdGhJZGVudGl0eSgpCit7CisgICAg
YXV0byBpZGVudGl0eSA9IHRlc3RJZGVudGl0eSgpOwogICAgIEVYUEVDVF9OT1RfTlVMTChpZGVu
dGl0eSk7CiAgICAgCi0gICAgcmV0dXJuIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbFdpdGhJ
ZGVudGl0eTppZGVudGl0eS5nZXQoKSBjZXJ0aWZpY2F0ZXM6QFsoaWQpY2VydGlmaWNhdGUuZ2V0
KCldIHBlcnNpc3RlbmNlOk5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZV07CisgICAgcmV0
dXJuIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbFdpdGhJZGVudGl0eTppZGVudGl0eS5nZXQo
KSBjZXJ0aWZpY2F0ZXM6QFsoaWQpdGVzdENlcnRpZmljYXRlKCkuZ2V0KCldIHBlcnNpc3RlbmNl
Ok5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZV07CiB9CiAKIEBpbnRlcmZhY2UgQ2hhbGxl
bmdlRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+CkluZGV4OiBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RMU0RlcHJlY2F0aW9uLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVExTRGVwcmVj
YXRpb24ubW0JKHJldmlzaW9uIDI1NTU4MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvVExTRGVwcmVjYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3
LDcgQEAKIAogI2lmIEhBVkUoU1NMKQogCisjaW1wb3J0ICJIVFRQU2VydmVyLmgiCiAjaW1wb3J0
ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVENQU2VydmVyLmgiCiAjaW1wb3J0ICJU
ZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCkBAIC0zNywxMyArMzgsMTQgQEAKICNpbXBvcnQgPFdl
YktpdC9XZWJLaXQuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL3RleHQv
U3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
I2ltcG9ydCA8V2ViS2l0L1dlYlVJS2l0U3VwcG9ydC5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkNv
cmVUaHJlYWQuaD4KICNlbmRpZgogCi0jaWYgSEFWRShUTFNfUFJPVE9DT0xfVkVSU0lPTl9UKQor
I2lmIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkgfHwgSEFWRShORVRXT1JLX0ZSQU1FV09S
SykKIEBpbnRlcmZhY2UgVExTT2JzZXJ2ZXIgOiBOU09iamVjdAogLSAodm9pZCl3YWl0VW50aWxO
ZWdvdGlhdGVkTGVnYWN5VExTQ2hhbmdlZDsKIEBlbmQKQEAgLTIyNywxNCArMjI5LDEwIEBAIFRF
U1QoVExTVmVyc2lvbiwgRElTQUJMRURfTmF2aWdhdGlvbkRlbGUKICAgICB9CiB9CiAKLSNpZiBI
QVZFKFRMU19QUk9UT0NPTF9WRVJTSU9OX1QpCi1URVNUKFRMU1ZlcnNpb24sIE5lZ290aWF0ZWRM
ZWdhY3lUTFMpCi17Ci0gICAgVENQU2VydmVyIHNlcnZlcihUQ1BTZXJ2ZXI6OlByb3RvY29sOjpI
VFRQUywgW10gKFNTTCAqc3NsKSB7Ci0gICAgICAgIFRDUFNlcnZlcjo6cmVzcG9uZFdpdGhPSyhz
c2wpOwotICAgICAgICBUQ1BTZXJ2ZXI6OnJlc3BvbmRXaXRoT0soc3NsKTsKLSAgICB9LCB0bHMx
XzEpOworI2lmIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkgfHwgSEFWRShORVRXT1JLX0ZS
QU1FV09SSykKIAorc3RhdGljIHN0ZDo6cGFpcjxSZXRhaW5QdHI8V0tXZWJWaWV3PiwgUmV0YWlu
UHRyPFRlc3ROYXZpZ2F0aW9uRGVsZWdhdGU+PiB3ZWJWaWV3V2l0aE5hdmlnYXRpb25EZWxlZ2F0
ZSgpCit7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdh
dGUgbmV3XSk7CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwog
ICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CkBAIC0y
NDIsNiArMjQwLDIwIEBAIFRFU1QoVExTVmVyc2lvbiwgTmVnb3RpYXRlZExlZ2FjeVRMUykKICAg
ICAgICAgRVhQRUNUX1dLX1NUUkVRKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGlj
YXRpb25NZXRob2QsIE5TVVJMQXV0aGVudGljYXRpb25NZXRob2RTZXJ2ZXJUcnVzdCk7CiAgICAg
ICAgIGNhbGxiYWNrKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNV
UkxDcmVkZW50aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNl
LnNlcnZlclRydXN0XSk7CiAgICAgfV07CisgICAgcmV0dXJuIHsgd2ViVmlldywgZGVsZWdhdGUg
fTsKK30KKworI2VuZGlmIC8vIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkgfHwgSEFWRShO
RVRXT1JLX0ZSQU1FV09SSykKKworI2lmIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkKKwor
VEVTVChUTFNWZXJzaW9uLCBOZWdvdGlhdGVkTGVnYWN5VExTKQoreworICAgIEhUVFBTZXJ2ZXIg
c2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsgImhlbGxvIiB9IH0KKyAgICB9LCBIVFRQU2VydmVy
OjpQcm90b2NvbDo6SHR0cHNXaXRoTGVnYWN5VExTKTsKKworICAgIGF1dG8gW3dlYlZpZXcsIGRl
bGVnYXRlXSA9IHdlYlZpZXdXaXRoTmF2aWdhdGlvbkRlbGVnYXRlKCk7CiAgICAgTlNVUkxSZXF1
ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0
aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVk
LyIsIHNlcnZlci5wb3J0KCldXV07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07
CiAKQEAgLTI2Miw3ICsyNzQsNjQgQEAgVEVTVChUTFNWZXJzaW9uLCBOZWdvdGlhdGVkTGVnYWN5
VExTKQogCiAgICAgW3dlYlZpZXcgcmVtb3ZlT2JzZXJ2ZXI6b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5
UGF0aDpAIl9uZWdvdGlhdGVkTGVnYWN5VExTIl07CiB9Ci0jZW5kaWYKKworI2VuZGlmIC8vIEhB
VkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkKKworI2lmIEhBVkUoTkVUV09SS19GUkFNRVdPUksp
ICYmIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkKKworVEVTVChUTFNWZXJzaW9uLCBOYXZp
Z2F0ZUJhY2spCit7CisgICAgSFRUUFNlcnZlciBsZWdhY3lUTFNTZXJ2ZXIoeworICAgICAgICB7
ICIvIiwgeyAiaGVsbG8iIH0gfQorICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwc1dp
dGhMZWdhY3lUTFMpOworCisgICAgSFRUUFNlcnZlciBtb2Rlcm5UTFNTZXJ2ZXIoeworICAgICAg
ICB7ICIvIiwgeyAiaGVsbG8iIH0gfQorICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRw
cyk7CisgICAgCisgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gd2ViVmlld1dpdGhOYXZp
Z2F0aW9uRGVsZWdhdGUoKTsKKyAgICBhdXRvIG9ic2VydmVyID0gYWRvcHROUyhbVExTT2JzZXJ2
ZXIgbmV3XSk7CisgICAgW3dlYlZpZXcgYWRkT2JzZXJ2ZXI6b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5
UGF0aDpAIl9uZWdvdGlhdGVkTGVnYWN5VExTIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdP
cHRpb25OZXcgY29udGV4dDpuaWxdOworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6bGVnYWN5
VExTU2VydmVyLnJlcXVlc3QoKV07CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IF9uZWdvdGlh
dGVkTGVnYWN5VExTXSk7CisgICAgW2RlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9u
XTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBfbmVnb3RpYXRlZExlZ2FjeVRMU10pOworCisg
ICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6bW9kZXJuVExTU2VydmVyLnJlcXVlc3QoKV07CisgICAg
W2RlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKyAgICBFWFBFQ1RfRkFMU0Uo
W3dlYlZpZXcgX25lZ290aWF0ZWRMZWdhY3lUTFNdKTsKKworICAgIFt3ZWJWaWV3IGdvQmFja107
CisgICAgW29ic2VydmVyIHdhaXRVbnRpbE5lZ290aWF0ZWRMZWdhY3lUTFNDaGFuZ2VkXTsKKyAg
ICBFWFBFQ1RfVFJVRShbd2ViVmlldyBfbmVnb3RpYXRlZExlZ2FjeVRMU10pOworCisgICAgW3dl
YlZpZXcgcmVtb3ZlT2JzZXJ2ZXI6b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAIl9uZWdvdGlh
dGVkTGVnYWN5VExTIl07Cit9CisKK1RFU1QoVExTVmVyc2lvbiwgU3VicmVzb3VyY2UpCit7Cisg
ICAgSFRUUFNlcnZlciBsZWdhY3lUTFNTZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyAiaGVsbG8i
IH0gfQorICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwc1dpdGhMZWdhY3lUTFMpOwor
CisgICAgSFRUUFNlcnZlciBtb2Rlcm5UTFNTZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyBtYWtl
U3RyaW5nKCI8c2NyaXB0PmZldGNoKCdodHRwczovLzEyNy4wLjAuMToiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4obGVnYWN5VExTU2VydmVyLnBvcnQoKSksICIvJyx7bW9kZTonbm8tY29ycyd9KTwv
c2NyaXB0PiIpIH0gfQorICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CisgICAg
CisgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gd2ViVmlld1dpdGhOYXZpZ2F0aW9uRGVs
ZWdhdGUoKTsKKyAgICBhdXRvIG9ic2VydmVyID0gYWRvcHROUyhbVExTT2JzZXJ2ZXIgbmV3XSk7
CisgICAgW3dlYlZpZXcgYWRkT2JzZXJ2ZXI6b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAIl9u
ZWdvdGlhdGVkTGVnYWN5VExTIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcg
Y29udGV4dDpuaWxdOworCisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IF9uZWdvdGlhdGVkTGVn
YWN5VExTXSk7CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6bW9kZXJuVExTU2VydmVyLnJlcXVl
c3QoKV07CisgICAgd2hpbGUgKCFbd2ViVmlldyBfbmVnb3RpYXRlZExlZ2FjeVRMU10pCisgICAg
ICAgIFtvYnNlcnZlciB3YWl0VW50aWxOZWdvdGlhdGVkTGVnYWN5VExTQ2hhbmdlZF07CisKKyAg
ICBbd2ViVmlldyByZW1vdmVPYnNlcnZlcjpvYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOkAiX25l
Z290aWF0ZWRMZWdhY3lUTFMiXTsKK30KKworI2VuZGlmIC8vIEhBVkUoTkVUV09SS19GUkFNRVdP
UkspICYmIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkKIAogLy8gRklYTUU6IEFkZCBzb21l
IHRlc3RzIGZvciBXS1dlYlZpZXcuaGFzT25seVNlY3VyZUNvbnRlbnQKIApJbmRleDogVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVz
dFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgJKHJldmlzaW9uIDI1NTU4MCkKKysrIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3
ICszOCw4IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIGNsYXNzIEhUVFBTZXJ2ZXIgewog
cHVibGljOgogICAgIHN0cnVjdCBIVFRQUmVzcG9uc2U7Ci0gICAgSFRUUFNlcnZlcihzdGQ6Omlu
aXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPFN0cmluZywgSFRUUFJlc3BvbnNlPj4pOworICAgIGVu
dW0gY2xhc3MgUHJvdG9jb2wgOiB1aW50OF90IHsgSHR0cCwgSHR0cHMsIEh0dHBzV2l0aExlZ2Fj
eVRMUyB9OworICAgIEhUVFBTZXJ2ZXIoc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxT
dHJpbmcsIEhUVFBSZXNwb25zZT4+LCBQcm90b2NvbCA9IFByb3RvY29sOjpIdHRwKTsKICAgICB1
aW50MTZfdCBwb3J0KCkgY29uc3Q7CiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0KCkgY29uc3Q7
CiAgICAgCkBAIC00Niw2ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXNwb25kVG9SZXF1
ZXN0cyhud19jb25uZWN0aW9uX3QpOwogICAgIAogICAgIFJldGFpblB0cjxud19saXN0ZW5lcl90
PiBtX2xpc3RlbmVyOworICAgIGNvbnN0IFByb3RvY29sIG1fcHJvdG9jb2w7CiAgICAgY29uc3Qg
SGFzaE1hcDxTdHJpbmcsIEhUVFBSZXNwb25zZT4gbV9yZXF1ZXN0UmVzcG9uc2VNYXA7CiB9Owog
CkBAIC03NCwzICs3Niw1IEBAIHN0cnVjdCBIVFRQU2VydmVyOjpIVFRQUmVzcG9uc2UgewogfSAv
LyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQogCiAjZW5kaWYgLy8gSEFWRShORVRXT1JLX0ZSQU1F
V09SSykKKworUmV0YWluUHRyPFNlY0lkZW50aXR5UmVmPiB0ZXN0SWRlbnRpdHkoKTsKSW5kZXg6
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0JKHJldmlzaW9uIDI1NTU4MCkK
KysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQkod29ya2luZyBjb3B5
KQpAQCAtMzMsMTUgKzMzLDI3IEBACiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotSFRU
UFNlcnZlcjo6SFRUUFNlcnZlcihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPFN0cmlu
ZywgSFRUUFJlc3BvbnNlPj4gcmVzcG9uc2VzKQotICAgIDogbV9yZXF1ZXN0UmVzcG9uc2VNYXAo
W10oc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxTdHJpbmcsIEhUVFBTZXJ2ZXI6OkhU
VFBSZXNwb25zZT4+IGxpc3QpIHsKK0hUVFBTZXJ2ZXI6OkhUVFBTZXJ2ZXIoc3RkOjppbml0aWFs
aXplcl9saXN0PHN0ZDo6cGFpcjxTdHJpbmcsIEhUVFBSZXNwb25zZT4+IHJlc3BvbnNlcywgUHJv
dG9jb2wgcHJvdG9jb2wpCisgICAgOiBtX3Byb3RvY29sKHByb3RvY29sKQorICAgICwgbV9yZXF1
ZXN0UmVzcG9uc2VNYXAoW10oc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxTdHJpbmcs
IEhUVFBTZXJ2ZXI6OkhUVFBSZXNwb25zZT4+IGxpc3QpIHsKICAgICAgICAgSGFzaE1hcDxTdHJp
bmcsIEhUVFBTZXJ2ZXI6OkhUVFBSZXNwb25zZT4gbWFwOwogICAgICAgICBmb3IgKGF1dG8mIHBh
aXIgOiBsaXN0KQogICAgICAgICAgICAgbWFwLmFkZChwYWlyLmZpcnN0LCBwYWlyLnNlY29uZCk7
CiAgICAgICAgIHJldHVybiBtYXA7CiAgICAgfShyZXNwb25zZXMpKQogewotICAgIGF1dG8gcGFy
YW1ldGVycyA9IGFkb3B0TlMobndfcGFyYW1ldGVyc19jcmVhdGVfc2VjdXJlX3RjcChOV19QQVJB
TUVURVJTX0RJU0FCTEVfUFJPVE9DT0wsIE5XX1BBUkFNRVRFUlNfREVGQVVMVF9DT05GSUdVUkFU
SU9OKSk7CisgICAgYXV0byBjb25maWd1cmVUTFMgPSBwcm90b2NvbCA9PSBQcm90b2NvbDo6SHR0
cCA/IE5XX1BBUkFNRVRFUlNfRElTQUJMRV9QUk9UT0NPTCA6IF4obndfcHJvdG9jb2xfb3B0aW9u
c190IHByb3RvY29sT3B0aW9ucykgeworICAgICAgICBhdXRvIG9wdGlvbnMgPSBhZG9wdE5TKG53
X3Rsc19jb3B5X3NlY19wcm90b2NvbF9vcHRpb25zKHByb3RvY29sT3B0aW9ucykpOworICAgICAg
ICBhdXRvIGlkZW50aXR5ID0gYWRvcHROUyhzZWNfaWRlbnRpdHlfY3JlYXRlKHRlc3RJZGVudGl0
eSgpLmdldCgpKSk7CisgICAgICAgIHNlY19wcm90b2NvbF9vcHRpb25zX3NldF9sb2NhbF9pZGVu
dGl0eShvcHRpb25zLmdldCgpLCBpZGVudGl0eS5nZXQoKSk7CisjaWYgSEFWRShUTFNfUFJPVE9D
T0xfVkVSU0lPTl9UKQorICAgICAgICBpZiAocHJvdG9jb2wgPT0gUHJvdG9jb2w6Okh0dHBzV2l0
aExlZ2FjeVRMUykKKyAgICAgICAgICAgIHNlY19wcm90b2NvbF9vcHRpb25zX3NldF9tYXhfdGxz
X3Byb3RvY29sX3ZlcnNpb24ob3B0aW9ucy5nZXQoKSwgdGxzX3Byb3RvY29sX3ZlcnNpb25fVExT
djEwKTsKKyNlbHNlCisgICAgICAgIEFTU0VSVChwcm90b2NvbCAhPSBQcm90b2NvbDo6SHR0cHNX
aXRoTGVnYWN5VExTKTsKKyNlbmRpZgorICAgIH07CisgICAgYXV0byBwYXJhbWV0ZXJzID0gYWRv
cHROUyhud19wYXJhbWV0ZXJzX2NyZWF0ZV9zZWN1cmVfdGNwKGNvbmZpZ3VyZVRMUywgTldfUEFS
QU1FVEVSU19ERUZBVUxUX0NPTkZJR1VSQVRJT04pKTsKICAgICBtX2xpc3RlbmVyID0gYWRvcHRO
Uyhud19saXN0ZW5lcl9jcmVhdGUocGFyYW1ldGVycy5nZXQoKSkpOwogICAgIG53X2xpc3RlbmVy
X3NldF9xdWV1ZShtX2xpc3RlbmVyLmdldCgpLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsK
ICAgICBud19saXN0ZW5lcl9zZXRfbmV3X2Nvbm5lY3Rpb25faGFuZGxlcihtX2xpc3RlbmVyLmdl
dCgpLCBeKG53X2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uKSB7CkBAIC0xMjcsNyArMTM5LDE1IEBA
IHVpbnQxNl90IEhUVFBTZXJ2ZXI6OnBvcnQoKSBjb25zdAogCiBOU1VSTFJlcXVlc3QgKkhUVFBT
ZXJ2ZXI6OnJlcXVlc3QoKSBjb25zdAogewotICAgIHJldHVybiBbTlNVUkxSZXF1ZXN0IHJlcXVl
c3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiaHR0cDovLzEyNy4wLjAuMTolZC8iLCBwb3J0KCldXV07CisgICAgTlNTdHJpbmcgKmZvcm1h
dDsKKyAgICBzd2l0Y2ggKG1fcHJvdG9jb2wpIHsKKyAgICBjYXNlIFByb3RvY29sOjpIdHRwOgor
ICAgICAgICBmb3JtYXQgPSBAImh0dHA6Ly8xMjcuMC4wLjE6JWQvIjsKKyAgICBjYXNlIFByb3Rv
Y29sOjpIdHRwczoKKyAgICBjYXNlIFByb3RvY29sOjpIdHRwc1dpdGhMZWdhY3lUTFM6CisgICAg
ICAgIGZvcm1hdCA9IEAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIjsKKyAgICB9CisgICAgcmV0dXJu
IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6Zm9ybWF0LCBwb3J0KCldXV07CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389699</attachid>
            <date>2020-02-04 13:50:24 -0800</date>
            <delta_ts>2020-02-04 14:03:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207207-20200204135023.patch</filename>
            <type>text/plain</type>
            <size>55182</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDIwLTAyLTA0ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRml4IHJhY2Ug
Y29uZGl0aW9uIGZvciBXS1dlYlZpZXcuX25lZ290aWF0ZWRMZWdhY3lUTFMgd2hlbiBsb2FkaW5n
IG1haW4gcmVzb3VvcmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDcyMDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmluY2x1ZGVDZXJ0aWZpY2F0ZUlu
Zm8gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJh
c2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjp1c2VkTGVnYWN5
VExTIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmRlY29k
ZSk6CisKIDIwMjAtMDItMDMgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIERvIG5vdCBjb3B5IGZlYXR1cmUgcG9saWN5IGluIGlzRmVhdHVyZVBvbGljeUFsbG93
ZWRCeURvY3VtZW50QW5kQWxsT3duZXJzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAkocmV2aXNpb24g
MjU1NTgwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3Bv
bnNlQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MSwxMSArMjYxLDEyIEBAIHZvaWQgUmVz
b3VyY2VSZXNwb25zZUJhc2U6OnNldFR5cGUoVHlwZSAKICAgICBtX3R5cGUgPSB0eXBlOwogfQog
Ci12b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjppbmNsdWRlQ2VydGlmaWNhdGVJbmZvKCkgY29u
c3QKK3ZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8oVXNl
ZExlZ2FjeVRMUyB1c2VkTGVnYWN5VExTKSBjb25zdAogewogICAgIGlmIChtX2NlcnRpZmljYXRl
SW5mbykKICAgICAgICAgcmV0dXJuOwogICAgIG1fY2VydGlmaWNhdGVJbmZvID0gc3RhdGljX2Nh
c3Q8Y29uc3QgUmVzb3VyY2VSZXNwb25zZSo+KHRoaXMpLT5wbGF0Zm9ybUNlcnRpZmljYXRlSW5m
bygpOworICAgIG1fdXNlZExlZ2FjeVRMUyA9IHVzZWRMZWdhY3lUTFM7CiB9CiAKIFN0cmluZyBS
ZXNvdXJjZVJlc3BvbnNlQmFzZTo6c3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25z
ZUJhc2UuaAkocmV2aXNpb24gMjU1NTgwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw4
IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiAKIGJvb2wgaXNTY3JpcHRBbGxvd2VkQnlOb3Nu
aWZmKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIAorZW51bSBjbGFzcyBVc2VkTGVnYWN5VExT
IDogYm9vbCB7IE5vLCBZZXMgfTsKKwogLy8gRG8gbm90IHVzZSB0aGlzIGNsYXNzIGRpcmVjdGx5
LCB1c2UgdGhlIGNsYXNzIFJlc291cmNlUmVzcG9uc2UgaW5zdGVhZAogY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZUJhc2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMTI3LDggKzEy
OSw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5h
bWUoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIHNhbml0aXplU3Vn
Z2VzdGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8oKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8oVXNlZExlZ2FjeVRMUyA9IFVzZWRMZWdhY3lUTFM6Ok5v
KSBjb25zdDsKICAgICBjb25zdCBPcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+JiBjZXJ0aWZpY2F0
ZUluZm8oKSBjb25zdCB7IHJldHVybiBtX2NlcnRpZmljYXRlSW5mbzsgfTsKKyAgICBib29sIHVz
ZWRMZWdhY3lUTFMoKSBjb25zdCB7IHJldHVybiBtX3VzZWRMZWdhY3lUTFMgPT0gVXNlZExlZ2Fj
eVRMUzo6WWVzOyB9CiAgICAgCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIHJldHVybiBwYXJzZWQg
dmFsdWVzIG9mIHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlIGhlYWRlcnMuCiAgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBjYWNoZUNvbnRyb2xDb250YWluc05vQ2FjaGUoKSBjb25zdDsKQEAgLTI0
Niw3ICsyNDksOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1JhbmdlUmVxdWVzdGVkIHsgZmFs
c2UgfTsKIAogcHJvdGVjdGVkOgotICAgIGludCBtX2h0dHBTdGF0dXNDb2RlIHsgMCB9OworICAg
IHNob3J0IG1faHR0cFN0YXR1c0NvZGUgeyAwIH07CisgICAgbXV0YWJsZSBVc2VkTGVnYWN5VExT
IG1fdXNlZExlZ2FjeVRMUyB7IFVzZWRMZWdhY3lUTFM6Ok5vIH07CiB9OwogCiBpbmxpbmUgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGEsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIGIpIHsgcmV0dXJuIFJlc291cmNlUmVzcG9uc2VCYXNlOjpjb21wYXJlKGEsIGIpOyB9
CkBAIC0yNzMsMTIgKzI3NywxMyBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjplbmNvZGUo
RW5jb2RlCiAgICAgaWYgKEVuY29kZXI6OmlzSVBDRW5jb2RlcikKICAgICAgICAgZW5jb2RlciA8
PCBtX25ldHdvcmtMb2FkTWV0cmljczsKIAotICAgIGVuY29kZXIgPDwgbV9odHRwU3RhdHVzQ29k
ZTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGludD4obV9odHRwU3RhdHVzQ29kZSk7CiAg
ICAgZW5jb2RlciA8PCBtX2NlcnRpZmljYXRlSW5mbzsKICAgICBlbmNvZGVyLmVuY29kZUVudW0o
bV9zb3VyY2UpOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShtX3R5cGUpOwogICAgIGVuY29kZXIu
ZW5jb2RlRW51bShtX3RhaW50aW5nKTsKLSAgICBlbmNvZGVyIDw8IG1faXNSZWRpcmVjdGVkOwor
ICAgIHVpbnQ4X3QgaXNSZWRpcmVjdGVkQW5kVXNlZExlZ2FjeVRMUyA9IChtX2lzUmVkaXJlY3Rl
ZCA/IDB4MSA6IDB4MCkgfCAobV91c2VkTGVnYWN5VExTID09IFVzZWRMZWdhY3lUTFM6OlllcyA/
IDB4MiA6IDB4MCk7CisgICAgZW5jb2RlciA8PCBpc1JlZGlyZWN0ZWRBbmRVc2VkTGVnYWN5VExT
OwogICAgIGVuY29kZXIgPDwgbV9pc1JhbmdlUmVxdWVzdGVkOwogfQogCkBAIC0zMTMsOCArMzE4
LDEwIEBAIGJvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmRlY29kZShEZWNvZGUKICAgICAvLyBU
aGUgbmV0d29ya0xvYWRNZXRyaWNzIGluZm8gaXMgb25seSBzZW5kIG92ZXIgSVBDIGFuZCBub3Qg
c3RvcmVkIGluIGRpc2sgY2FjaGUuCiAgICAgaWYgKERlY29kZXI6OmlzSVBDRGVjb2RlciAmJiAh
ZGVjb2Rlci5kZWNvZGUocmVzcG9uc2UubV9uZXR3b3JrTG9hZE1ldHJpY3MpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNwb25zZS5tX2h0dHBTdGF0
dXNDb2RlKSkKKyAgICBpbnQgaHR0cFN0YXR1c0NvZGU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShodHRwU3RhdHVzQ29kZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXNwb25zZS5t
X2h0dHBTdGF0dXNDb2RlID0gaHR0cFN0YXR1c0NvZGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXNwb25zZS5tX2NlcnRpZmljYXRlSW5mbykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShyZXNwb25zZS5tX3NvdXJjZSkpCkBAIC0zMjMsMTAg
KzMzMCwxMSBAQCBib29sIFJlc291cmNlUmVzcG9uc2VCYXNlOjpkZWNvZGUoRGVjb2RlCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShyZXNwb25zZS5t
X3RhaW50aW5nKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGJvb2wgaXNSZWRpcmVjdGVk
ID0gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShpc1JlZGlyZWN0ZWQpKQorICAgIHVp
bnQ4X3QgaXNSZWRpcmVjdGVkQW5kVXNlZExlZ2FjeVRMUyA9IDA7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShpc1JlZGlyZWN0ZWRBbmRVc2VkTGVnYWN5VExTKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIHJlc3BvbnNlLm1faXNSZWRpcmVjdGVkID0gaXNSZWRpcmVjdGVkOworICAgIHJl
c3BvbnNlLm1faXNSZWRpcmVjdGVkID0gaXNSZWRpcmVjdGVkQW5kVXNlZExlZ2FjeVRMUyAmIDB4
MTsKKyAgICByZXNwb25zZS5tX3VzZWRMZWdhY3lUTFMgPSAoaXNSZWRpcmVjdGVkQW5kVXNlZExl
Z2FjeVRMUyAmIDB4MikgPyBVc2VkTGVnYWN5VExTOjpZZXMgOiBVc2VkTGVnYWN5VExTOjpObzsK
IAogICAgIGJvb2wgaXNSYW5nZVJlcXVlc3RlZCA9IGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoaXNSYW5nZVJlcXVlc3RlZCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjU1NTgwKQor
KysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw3MCBA
QAorMjAyMC0wMi0wNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIEZpeCByYWNlIGNvbmRpdGlvbiBmb3IgV0tXZWJWaWV3Ll9uZWdvdGlhdGVk
TGVnYWN5VExTIHdoZW4gbG9hZGluZyBtYWluIHJlc291b3JjZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3MjA3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gUGFnZUxvYWRTdGF0ZTo6ZGlkQ29tbWl0
TG9hZCwgSSB3YXMgcmVzZXR0aW5nIHRoZSB2YWx1ZSBvZiBfbmVnb3RpYXRlZExlZ2FjeVRMUyB0
byBmYWxzZS4KKyAgICAgICAgVGhhdCBjcmVhdGVkIGEgcmFjZSBjb25kaXRpb24gd2hlbiBsb2Fk
aW5nIHRoZSBtYWluIHJlc291cmNlIGJlY2F1c2UgdGhlIE5ldHdvcmtQcm9jZXNzIHdvdWxkCisg
ICAgICAgIG1lc3NhZ2UgdGhlIFVJUHJvY2VzcyBzZXR0aW5nIF9uZWdvdGlhdGVkTGVnYWN5VExT
IHRvIGZhbHNlLCB3aGlsZSB0aGUgTmV0d29ya1Byb2Nlc3Mgd291bGQKKyAgICAgICAgbWVzc2Fn
ZSB0aGUgV2ViUHJvY2VzcyB3aGljaCB3b3VsZCBtZXNzYWdlIHRoZSBVSVByb2Nlc3MgdG8gY2Fs
bCBQYWdlTG9hZFN0YXRlOjpkaWRDb21taXRMb2FkCisgICAgICAgIHdoaWNoIHdvdWxkIHJlc2V0
IGl0IHRvIGZhbHNlLiAgTm93IGl0IHJlc2V0cyBpdCB0byB0aGUgY29ycmVjdCB2YWx1ZSwgd2hh
dGV2ZXIgaXQgaXMuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gbWFpbnRhaW4gYmluYXJ5IGNvbXBh
dGliaWxpdHkgd2l0aCBleGlzdGluZyBkaXNrIGNhY2hlcywgSSBidW5kbGUgdHdvIGJvb2xlYW5z
IHRvZ2V0aGVyCisgICAgICAgIHdoZW4gZW5jb2RpbmcuICBUaGlzIHJlc3VsdHMgaW4gZXhpc3Rp
bmcgZGlzayBjYWNoZXMgc2F5aW5nIHRoZXkgbG9hZGVkIG5vdGhpbmcgb3ZlciBsZWdhY3kgVExT
LAorICAgICAgICB3aGljaCBpcyBzb21ld2hhdCBjb3JyZWN0IGJlY2F1c2UgVExTIDEuMCBhbmQg
MS4xIHdlcmUgbm90IGRlcHJlY2F0ZWQgd2hlbiB0aGUgcmVzb3VyY2VzIHdlcmUgZmV0Y2hlZC4K
KyAgICAgICAgR29pbmcgZm9yd2FyZCwgdGhlIGJpdCB3aWxsIGJlIHNldCBhbmQgdGhlIGRpc2sg
Y2FjaGUgZW50cmllcyB3aWxsIHN0b3JlIHdoZXRoZXIgdGhleSB3ZXJlIGxvYWRlZAorICAgICAg
ICBvdmVyIGxlZ2FjeSBUTFMuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gbm90IGluY3JlYXNlIHRo
ZSBtZW1vcnkgZm9vdHByaW50IG9mIFJlc291cmNlUmVzcG9uc2UsIEkgY2hhbmdlZCBtX2h0dHBT
dGF0dXNDb2RlIGZyb20KKyAgICAgICAgYW4gaW50IHRvIGEgc2hvcnQuICBJdCBqdXN0IG5lZWRz
IHRvIGJlIGFibGUgdG8gY292ZXIgdGhlIHZhbHVlcyAwLTYwMCBvciBzbywgd2hpY2ggcmVhbGx5
IG9ubHkgbmVlZHMgMTAgYml0cy4KKworICAgICAgICBDb3ZlcmVkIGJ5IG5ldyBBUEkgdGVzdHMu
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJl
Y2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVm
bGlnaHRDaGVja2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNr
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6Om5lZ290aWF0ZWRMZWdhY3lU
TFMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFzay5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDbGllbnQ6Om5lZ290aWF0
ZWRMZWdhY3lUTFMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtEYXRhVGFza0Jsb2IuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tC
bG9iOjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6Om5vdGlmeURpZFJl
Y2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjp0aHJvdHRsZURl
bGF5Q29tcGxldGVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6Om5lZ290aWF0ZWRM
ZWdhY3lUTFMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQaW5nTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9QaW5nTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtE
YXRhVGFza0NvY29hLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjpk
aWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBV
UkxTZXNzaW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVSZXNwb25zZTpjb21wbGV0aW9uSGFuZGxlcjpd
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDdXJsOjppbnZva2VEaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNr
U291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmRpc3BhdGNo
RGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VMb2FkU3RhdGU6OmRpZENvbW1pdExvYWQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1By
b3Zpc2lvbmFsUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdl
UHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1Byb3Zp
c2lvbmFsUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKToKKwogMjAyMC0wMi0wMyAgU2Ft
IFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgU3RhcnQgc3BsaXR0aW5nIHBs
YXRmb3JtIHNwZWNpZmljIG92ZXJyaWRlcyBvZiBkZWZhdWx0IGVuYWJsZSBiZWhhdmlvciBpbnRv
IHRoZWlyIG93biBmaWxlcwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAkocmV2aXNpb24g
MjU1NTgwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZs
aWdodENoZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBO
ZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJlYwogICAgIG1fbmV0d29ya1Byb2Nlc3Mt
PmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShtX3BhcmFtZXRlcnMuc2Vzc2lvbklELCBtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIG1f
cGFyYW1ldGVycy50b3BPcmlnaW4gPyAmbV9wYXJhbWV0ZXJzLnRvcE9yaWdpbi0+ZGF0YSgpIDog
bnVsbHB0ciwgY2hhbGxlbmdlLCBuZWdvdGlhdGVkTGVnYWN5VExTLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNw
b25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtD
T1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiByZXNwb25zZSwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0
aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZSIpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgJ
KHJldmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0NPUlNQcmVmbGlnaHRDaGVja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJl
ZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hh
bGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdh
Y3lUTFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21w
bGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVy
cm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFs
Qnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwpJbmRl
eDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNw
cAkocmV2aXNpb24gMjU1NTgwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrRGF0YVRhc2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgTmV0
d29ya0RhdGFUYXNrOjpzY2hlZHVsZUZhaWx1cmUoRmEKICAgICBtX2ZhaWx1cmVUaW1lci5zdGFy
dE9uZVNob3QoMF9zKTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVSZXNw
b25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZl
UmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVkTGVnYWN5VExT
IG5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBpZiAocmVzcG9uc2UuaXNIVFRQMDkoKSkgewogICAgICAgICBh
dXRvIHVybCA9IHJlc3BvbnNlLnVybCgpOwpAQCAtMTExLDE3ICsxMTEsMTEgQEAgdm9pZCBOZXR3
b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZQogICAgICAgICB9CiAgICAgfQogICAgIGlm
IChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3Zl
KHJlc3BvbnNlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBtX2NsaWVu
dC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBuZWdvdGlhdGVkTGVnYWN5
VExTLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgZWxzZQogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Rh
dGFUYXNrOjpuZWdvdGlhdGVkTGVnYWN5VExTKCkgY29uc3QKLXsKLSAgICBpZiAobV9jbGllbnQp
Ci0gICAgICAgIG1fY2xpZW50LT5uZWdvdGlhdGVkTGVnYWN5VExTKCk7Ci19Ci0KIGJvb2wgTmV0
d29ya0RhdGFUYXNrOjpzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSBjb25z
dAogewogICAgIHJldHVybiBtX2NsaWVudCA/IG1fY2xpZW50LT5zaG91bGRDYXB0dXJlRXh0cmFO
ZXR3b3JrTG9hZE1ldHJpY3MoKSA6IGZhbHNlOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCShyZXZpc2lvbiAyNTU1ODApCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCSh3b3JraW5nIGNvcHkp
CkBAIC02Miw3ICs2Miw3IEBAIGNsYXNzIE5ldHdvcmtEYXRhVGFza0NsaWVudCB7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29t
cGxldGlvbkhhbmRsZXImJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2hhbGxl
bmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lU
TFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VD
b21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJl
c3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBj
b25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVz
RXhwZWN0ZWRUb1NlbmQpID0gMDsKQEAgLTcwLDcgKzcwLDYgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBjYW5ub3RTaG93VVJMKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3YXNCbG9ja2Vk
QnlSZXN0cmljdGlvbnMoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbmVnb3RpYXRlZExlZ2Fj
eVRMUygpIGNvbnN0IHsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3
b3JrTG9hZE1ldHJpY3MoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdm9pZCBkaWRD
b21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKQEAg
LTkyLDggKzkxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXN1bWUoKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVBbmRDYW5jZWwoKSA9IDA7CiAKLSAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXImJik7Ci0gICAgdm9pZCBuZWdvdGlhdGVkTGVnYWN5VExTKCkgY29uc3Q7
CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpOwogICAg
IGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkgY29uc3Q7CiAKICAg
ICBlbnVtIGNsYXNzIFN0YXRlIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAkocmV2aXNpb24gMjU1NTgwKQorKysg
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjkwLDcgKzI5MCw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6
ZGlzcGF0Y2hEaWRSZWMKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgZGlkUmVjZWl2ZVJl
c3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUo
cHJvdGVjdGVkVGhpcyksIGVycm9yQ29kZV0oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgewor
ICAgIGRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgTmVnb3RpYXRlZExlZ2Fj
eVRMUzo6Tm8sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwg
ZXJyb3JDb2RlXShQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKSB7CiAgICAgICAgIExPRyhOZXR3
b3JrU2Vzc2lvbiwgIiVwIC0gTmV0d29ya0RhdGFUYXNrQmxvYjo6ZGlkUmVjZWl2ZVJlc3BvbnNl
IGNvbXBsZXRpb25IYW5kbGVyICgldSkiLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocG9s
aWN5QWN0aW9uKSk7CiAKICAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNhbmNlbGluZyB8
fCBtX3N0YXRlID09IFN0YXRlOjpDb21wbGV0ZWQpIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCShyZXZpc2lvbiAyNTU1ODApCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjA2LDEyICsyMDYsNyBAQCB2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdl
KEF1CiAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShtX3Rhc2stPnNlc3Npb25JRCgpLCBtX3Bh
cmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIG1fcGFyYW1ldGVycy50b3BPcmlnaW4gPyAmbV9wYXJh
bWV0ZXJzLnRvcE9yaWdpbi0+ZGF0YSgpIDogbnVsbHB0ciwgY2hhbGxlbmdlLCBuZWdvdGlhdGVk
TGVnYWN5VExTLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29y
a0xvYWQ6Om5lZ290aWF0ZWRMZWdhY3lUTFMoKSBjb25zdAotewotICAgIG1fbmV0d29ya1Byb2Nl
c3MtPmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLm5lZ290aWF0ZWRMZWdhY3lUTFMobV9wYXJhbWV0
ZXJzLndlYlBhZ2VQcm94eUlEKTsKLX0KLQotdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFu
ZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgTmVnb3RpYXRlZExlZ2FjeVRMUyBu
ZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBBU1NFUlQo
IW1fdGhyb3R0bGUpOwpAQCAtMjI2LDE2ICsyMjEsMTkgQEAgdm9pZCBOZXR3b3JrTG9hZDo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKFJlcwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbm90aWZ5
RGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CisgICAgaWYgKG5lZ290aWF0ZWRMZWdhY3lUTFMgPT0gTmVnb3RpYXRlZExlZ2Fj
eVRMUzo6WWVzKQorICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5hdXRoZW50aWNhdGlvbk1hbmFn
ZXIoKS5uZWdvdGlhdGVkTGVnYWN5VExTKG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCk7Cisg
ICAgCisgICAgbm90aWZ5RGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBuZWdv
dGlhdGVkTGVnYWN5VExTLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQg
TmV0d29ya0xvYWQ6Om5vdGlmeURpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYg
cmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgTmV0d29ya0xvYWQ6Om5vdGlmeURpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0ZWRMZWdhY3lUTFMgbmVnb3RpYXRlZExlZ2FjeVRMUywg
UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICByZXNwb25zZS5zZXRTb3VyY2UoUmVzb3Vy
Y2VSZXNwb25zZTo6U291cmNlOjpOZXR3b3JrKTsKICAgICBpZiAobV9wYXJhbWV0ZXJzLm5lZWRz
Q2VydGlmaWNhdGVJbmZvKQotICAgICAgICByZXNwb25zZS5pbmNsdWRlQ2VydGlmaWNhdGVJbmZv
KCk7CisgICAgICAgIHJlc3BvbnNlLmluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8obmVnb3RpYXRlZExl
Z2FjeVRMUyA9PSBOZWdvdGlhdGVkTGVnYWN5VExTOjpZZXMgPyBVc2VkTGVnYWN5VExTOjpZZXMg
OiBVc2VkTGVnYWN5VExTOjpObyk7CiAKICAgICBtX2NsaWVudC5nZXQoKS5kaWRSZWNlaXZlUmVz
cG9uc2UoV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0K
QEAgLTI2NSw3ICsyNjMsNyBAQCB2b2lkIE5ldHdvcmtMb2FkOjp0aHJvdHRsZURlbGF5Q29tcGxl
dGVkCiAKICAgICBhdXRvIHRocm90dGxlID0gV1RGTW92ZShtX3Rocm90dGxlKTsKIAotICAgIG5v
dGlmeURpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHRocm90dGxlLT5yZXNwb25zZSksIFdURk1v
dmUodGhyb3R0bGUtPnJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBub3RpZnlEaWRS
ZWNlaXZlUmVzcG9uc2UoV1RGTW92ZSh0aHJvdHRsZS0+cmVzcG9uc2UpLCBOZWdvdGlhdGVkTGVn
YWN5VExTOjpObywgV1RGTW92ZSh0aHJvdHRsZS0+cmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcikp
OwogfQogCiB2b2lkIE5ldHdvcmtMb2FkOjpkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVz
U2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKQpJbmRleDogU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAkocmV2aXNpb24gMjU1NTgwKQorKysg
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCSh3b3JraW5nIGNvcHkp
CkBAIC03NCwxNiArNzQsMTUgQEAgcHJpdmF0ZToKICAgICAvLyBOZXR3b3JrRGF0YVRhc2tDbGll
bnQKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlv
bkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5n
ZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYm
KSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIm
JikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBm
aW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50
NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwogICAgIHZvaWQgd2FzQmxvY2tl
ZCgpIGZpbmFsOwogICAgIHZvaWQgY2Fubm90U2hvd1VSTCgpIGZpbmFsOwogICAgIHZvaWQgd2Fz
QmxvY2tlZEJ5UmVzdHJpY3Rpb25zKCkgZmluYWw7Ci0gICAgdm9pZCBuZWdvdGlhdGVkTGVnYWN5
VExTKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIG5vdGlmeURpZFJlY2VpdmVSZXNwb25zZShX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJik7
CisgICAgdm9pZCBub3RpZnlEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYp
OwogICAgIHZvaWQgdGhyb3R0bGVEZWxheUNvbXBsZXRlZCgpOwogCiAgICAgc3RkOjpyZWZlcmVu
Y2Vfd3JhcHBlcjxOZXR3b3JrTG9hZENsaWVudD4gbV9jbGllbnQ7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHJl
dmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDggQEAgY2xhc3MgTmV0
d29ya0xvYWRDaGVja2VyOwogY2xhc3MgU2VydmljZVdvcmtlckZldGNoVGFzazsKIGNsYXNzIFdl
YlNXU2VydmVyQ29ubmVjdGlvbjsKIAorZW51bSBjbGFzcyBOZWdvdGlhdGVkTGVnYWN5VExTIDog
Ym9vbDsKKwogc3RydWN0IFJlc291cmNlTG9hZEluZm87CiAKIG5hbWVzcGFjZSBOZXR3b3JrQ2Fj
aGUgewpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAJKHJl
dmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjAsNyArMTYwLDcgQEAgdm9pZCBQaW5nTG9hZDo6ZGlk
UmVjZWl2ZUNoYWxsZW5nZShBdXRoZQogICAgIGRpZEZpbmlzaChSZXNvdXJjZUVycm9yIHsgU3Ry
aW5nKCksIDAsIGN1cnJlbnRVUkwoKSwgIkZhaWxlZCBIVFRQIGF1dGhlbnRpY2F0aW9uIl9zLCBS
ZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9sIH0pOwogfQogCi12b2lkIFBpbmdMb2Fk
OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNwb25z
ZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFBpbmdMb2FkOjpk
aWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVk
TGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlIC0gaHR0
cFN0YXR1c0NvZGU6ICVkIiwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7CiAgICAgYXV0byB3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUGluZ0xvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1BpbmdMb2FkLmgJKHJldmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENv
bXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShX
ZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBD
aGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhh
bmRsZXImJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25I
YW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRy
aWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2Vu
dCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLmgJKHJldmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAkod29ya2luZyBjb3B5KQpAQCAtNTQs
NyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5
dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVn
b3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJik7CiAgICAgdm9p
ZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29u
c3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5k
bGVyJiYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYm
KTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYp
OwogCiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRp
b25IYW5kbGVyJiYpOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCShyZXZpc2lvbiAyNTU1ODAp
CisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0Nv
Y29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNzMsMTAgKzM3MywxMCBAQCB2b2lkIE5ldHdvcmtE
YXRhVGFza0NvY29hOjpkaWRSZWNlaXZlRGF0CiAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZl
RGF0YShXVEZNb3ZlKGRhdGEpKTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgV2Vi
S2l0OjpSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVkTGVnYWN5VExTIG5lZ290aWF0ZWRMZWdh
Y3lUTFMsIFdlYktpdDo6UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIEVNSVRfU0lHTlBPU1QobV90YXNrLCAicmVjZWl2ZWQgcmVzcG9uc2UgaGVh
ZGVycyIpOwotICAgIE5ldHdvcmtEYXRhVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUo
cmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgTmV0d29ya0RhdGFU
YXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSksIG5lZ290aWF0ZWRMZWdh
Y3lUTFMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrRGF0
YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2Nv
YS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtTZXNzaW9uQ29jb2EubW0JKHJldmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQkod29ya2luZyBjb3B5
KQpAQCAtODE4LDI0ICs4MTgsMjIgQEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24g
KilzZXNzaQogICAgIGlmIChhdXRvKiBuZXR3b3JrRGF0YVRhc2sgPSBbc2VsZiBleGlzdGluZ1Rh
c2s6ZGF0YVRhc2tdKSB7CiAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAg
ICAgICAgYm9vbCBuZWdvdGlhdGVkTGVnYWN5VExTID0gZmFsc2U7CisgICAgICAgIE5lZ290aWF0
ZWRMZWdhY3lUTFMgbmVnb3RpYXRlZExlZ2FjeVRMUyA9IE5lZ290aWF0ZWRMZWdhY3lUTFM6Ok5v
OwogI2lmIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkKICAgICAgICAgTlNVUkxTZXNzaW9u
VGFza1RyYW5zYWN0aW9uTWV0cmljcyAqbWV0cmljcyA9IGRhdGFUYXNrLl9pbmNvbXBsZXRlVGFz
a01ldHJpY3MudHJhbnNhY3Rpb25NZXRyaWNzLmxhc3RPYmplY3Q7CiAgICAgICAgIGF1dG8gdGxz
VmVyc2lvbiA9ICh0bHNfcHJvdG9jb2xfdmVyc2lvbl90KW1ldHJpY3MubmVnb3RpYXRlZFRMU1By
b3RvY29sVmVyc2lvbi51bnNpZ25lZFNob3J0VmFsdWU7CiAgICAgICAgIGlmICh0bHNWZXJzaW9u
ID09IHRsc19wcm90b2NvbF92ZXJzaW9uX1RMU3YxMCB8fCB0bHNWZXJzaW9uID09IHRsc19wcm90
b2NvbF92ZXJzaW9uX1RMU3YxMSkKLSAgICAgICAgICAgIG5lZ290aWF0ZWRMZWdhY3lUTFMgPSB0
cnVlOworICAgICAgICAgICAgbmVnb3RpYXRlZExlZ2FjeVRMUyA9IE5lZ290aWF0ZWRMZWdhY3lU
TFM6OlllczsKICAgICAgICAgVU5VU0VEX1BBUkFNKG1ldHJpY3MpOwogI2Vsc2UgLy8gV2UgZG8g
bm90IG5lZWQgdG8gY2hlY2sgX1RMU05lZ290aWF0ZWRQcm90b2NvbFZlcnNpb24gaWYgd2UgaGF2
ZSBtZXRyaWNzLm5lZ290aWF0ZWRUTFNQcm90b2NvbFZlcnNpb24gYmVjYXVzZSBpdCB3b3JrcyBh
dCByZXNwb25zZSB0aW1lIGV2ZW4gYmVmb3JlIHJkYXI6Ly9wcm9ibGVtLzU2NTIyNjAxCiAgICAg
ICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgIGlmIChbZGF0
YVRhc2sgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfVExTTmVnb3RpYXRlZFByb3RvY29s
VmVyc2lvbildKSB7CiAgICAgICAgICAgICBTU0xQcm90b2NvbCB0bHNWZXJzaW9uID0gW2RhdGFU
YXNrIF9UTFNOZWdvdGlhdGVkUHJvdG9jb2xWZXJzaW9uXTsKICAgICAgICAgICAgIGlmICh0bHNW
ZXJzaW9uID09IGtUTFNQcm90b2NvbDExIHx8IHRsc1ZlcnNpb24gPT0ga1RMU1Byb3RvY29sMSkK
LSAgICAgICAgICAgICAgICBuZWdvdGlhdGVkTGVnYWN5VExTID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICBuZWdvdGlhdGVkTGVnYWN5VExTID0gTmVnb3RpYXRlZExlZ2FjeVRMUzo6WWVzOwogICAg
ICAgICB9CiAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogI2VuZGlm
Ci0gICAgICAgIGlmIChuZWdvdGlhdGVkTGVnYWN5VExTKQotICAgICAgICAgICAgbmV0d29ya0Rh
dGFUYXNrLT5uZWdvdGlhdGVkTGVnYWN5VExTKCk7CiAgICAgICAgIAogICAgICAgICAvLyBBdm9p
ZCBNSU1FIHR5cGUgc25pZmZpbmcgaWYgdGhlIHJlc3BvbnNlIGNvbWVzIGJhY2sgYXMgMzA0IE5v
dCBNb2RpZmllZC4KICAgICAgICAgaW50IHN0YXR1c0NvZGUgPSBbcmVzcG9uc2UgaXNLaW5kT2ZD
bGFzczpOU0hUVFBVUkxSZXNwb25zZS5jbGFzc10gPyBbKE5TSFRUUFVSTFJlc3BvbnNlICopcmVz
cG9uc2Ugc3RhdHVzQ29kZV0gOiAwOwpAQCAtODU0LDcgKzg1Miw3IEBAIC0gKHZvaWQpVVJMU2Vz
c2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2kKICAgICAgICAgY29weVRpbWluZ0RhdGEoW2RhdGFU
YXNrIF90aW1pbmdEYXRhXSwgcmVzb3VyY2VSZXNwb25zZS5kZXByZWNhdGVkTmV0d29ya0xvYWRN
ZXRyaWNzKCkpOwogCiAgICAgICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXJDb3B5ID0gQmxvY2tf
Y29weShjb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgICAgIG5ldHdvcmtEYXRhVGFzay0+ZGlkUmVj
ZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzb3VyY2VSZXNwb25zZSksIFtjb21wbGV0aW9uSGFuZGxl
ckNvcHksIHRhc2tJZGVudGlmaWVyXShXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9u
KSB7CisgICAgICAgIG5ldHdvcmtEYXRhVGFzay0+ZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUo
cmVzb3VyY2VSZXNwb25zZSksIG5lZ290aWF0ZWRMZWdhY3lUTFMsIFtjb21wbGV0aW9uSGFuZGxl
ckNvcHksIHRhc2tJZGVudGlmaWVyXShXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9u
KSB7CiAjaWYgIUxPR19ESVNBQkxFRAogICAgICAgICAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAi
JWxsdSBkaWRSZWNlaXZlUmVzcG9uc2UgY29tcGxldGlvbkhhbmRsZXIgKCVkKSIsIHRhc2tJZGVu
dGlmaWVyLCBwb2xpY3lBY3Rpb24pOwogI2Vsc2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAJKHJl
dmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3
b3JrRGF0YVRhc2tDdXJsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI0LDcgKzIyNCw3IEBAIGJv
b2wgTmV0d29ya0RhdGFUYXNrQ3VybDo6c2hvdWxkUmVkaXJlY3QKIAogdm9pZCBOZXR3b3JrRGF0
YVRhc2tDdXJsOjppbnZva2VEaWRSZWNlaXZlUmVzcG9uc2UoKQogewotICAgIGRpZFJlY2VpdmVS
ZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlKG1fcmVzcG9uc2UpLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpXShQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKSB7CisgICAgZGlk
UmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UobV9yZXNwb25zZSksIE5lZ290aWF0ZWRM
ZWdhY3lUTFM6Ok5vLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShQb2xp
Y3lBY3Rpb24gcG9saWN5QWN0aW9uKSB7CiAgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpD
YW5jZWxpbmcgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6Q29tcGxldGVkKQogICAgICAgICAgICAgcmV0
dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0Rh
dGFUYXNrU291cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCShyZXZpc2lvbiAyNTU1ODApCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM3OCw3ICszNzgsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6
OmRpc3BhdGNoRGlkUmVjCiAgICAgZGVwcmVjYXRlZFJlc3BvbnNlTWV0cmljcy5yZXF1ZXN0U3Rh
cnQgPSBtX25ldHdvcmtMb2FkTWV0cmljcy5yZXF1ZXN0U3RhcnQ7CiAgICAgZGVwcmVjYXRlZFJl
c3BvbnNlTWV0cmljcy5yZXNwb25zZVN0YXJ0ID0gbV9uZXR3b3JrTG9hZE1ldHJpY3MucmVzcG9u
c2VTdGFydDsKIAotICAgIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlKG1fcmVz
cG9uc2UpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShQb2xpY3lBY3Rp
b24gcG9saWN5QWN0aW9uKSB7CisgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9u
c2UobV9yZXNwb25zZSksIE5lZ290aWF0ZWRMZWdhY3lUTFM6Ok5vLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpXShQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKSB7CiAgICAg
ICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDYW5jZWxpbmcgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6
Q29tcGxldGVkKSB7CiAgICAgICAgICAgICBjbGVhclJlcXVlc3QoKTsKICAgICAgICAgICAgIHJl
dHVybjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuY3BwCShy
ZXZpc2lvbiAyNTU1ODApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE3LDcgKzMxNyw3IEBAIHZvaWQgUGFnZUxvYWRTdGF0
ZTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG8KICAgICBtX3VuY29tbWl0dGVkU3RhdGUudW5yZWFjaGFi
bGVVUkwgPSBtX2xhc3RVbnJlYWNoYWJsZVVSTDsKIH0KIAotdm9pZCBQYWdlTG9hZFN0YXRlOjpk
aWRDb21taXRMb2FkKGNvbnN0IFRyYW5zYWN0aW9uOjpUb2tlbiYgdG9rZW4sIFdlYkNlcnRpZmlj
YXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBib29sIGhhc0luc2VjdXJlQ29udGVudCkKK3ZvaWQg
UGFnZUxvYWRTdGF0ZTo6ZGlkQ29tbWl0TG9hZChjb25zdCBUcmFuc2FjdGlvbjo6VG9rZW4mIHRv
a2VuLCBXZWJDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCBoYXNJbnNlY3Vy
ZUNvbnRlbnQsIGJvb2wgdXNlZExlZ2FjeVRMUykKIHsKICAgICBBU1NFUlRfVU5VU0VEKHRva2Vu
LCAmdG9rZW4ubV9wYWdlTG9hZFN0YXRlID09IHRoaXMpOwogICAgIEFTU0VSVChtX3VuY29tbWl0
dGVkU3RhdGUuc3RhdGUgPT0gU3RhdGU6OlByb3Zpc2lvbmFsKTsKQEAgLTMyOCw3ICszMjgsNyBA
QCB2b2lkIFBhZ2VMb2FkU3RhdGU6OmRpZENvbW1pdExvYWQoY29uc3QgCiAKICAgICBtX3VuY29t
bWl0dGVkU3RhdGUudXJsID0gbV91bmNvbW1pdHRlZFN0YXRlLnByb3Zpc2lvbmFsVVJMOwogICAg
IG1fdW5jb21taXR0ZWRTdGF0ZS5wcm92aXNpb25hbFVSTCA9IFN0cmluZygpOwotICAgIG1fdW5j
b21taXR0ZWRTdGF0ZS5uZWdvdGlhdGVkTGVnYWN5VExTID0gZmFsc2U7CisgICAgbV91bmNvbW1p
dHRlZFN0YXRlLm5lZ290aWF0ZWRMZWdhY3lUTFMgPSB1c2VkTGVnYWN5VExTOwogCiAgICAgbV91
bmNvbW1pdHRlZFN0YXRlLnRpdGxlID0gU3RyaW5nKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5oCShyZXZpc2lvbiAyNTU1ODApCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw3ICsx
NjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92
aXNpb25hbExvYWQoY29uc3QgVHJhbnNhY3Rpb246OlRva2VuJiwgY29uc3QgU3RyaW5nJiB1cmwp
OwogICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBUcmFuc2FjdGlvbjo6VG9r
ZW4mKTsKIAotICAgIHZvaWQgZGlkQ29tbWl0TG9hZChjb25zdCBUcmFuc2FjdGlvbjo6VG9rZW4m
LCBXZWJDZXJ0aWZpY2F0ZUluZm8mLCBib29sIGhhc0luc2VjdXJlQ29udGVudCk7CisgICAgdm9p
ZCBkaWRDb21taXRMb2FkKGNvbnN0IFRyYW5zYWN0aW9uOjpUb2tlbiYsIFdlYkNlcnRpZmljYXRl
SW5mbyYsIGJvb2wgaGFzSW5zZWN1cmVDb250ZW50LCBib29sIHVzZWRMZWdhY3lUTFMpOwogICAg
IHZvaWQgZGlkRmluaXNoTG9hZChjb25zdCBUcmFuc2FjdGlvbjo6VG9rZW4mKTsKICAgICB2b2lk
IGRpZEZhaWxMb2FkKGNvbnN0IFRyYW5zYWN0aW9uOjpUb2tlbiYpOwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCShyZXZpc2lv
biAyNTU1ODApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIFByb3Zpc2lvbmFs
UGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzCiAgICAgbV9wYWdlLmRpZEZhaWxQcm92aXNpb25hbExv
YWRGb3JGcmFtZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBmcmFtZUlELCBXVEZNb3ZlKGZy
YW1lU2VjdXJpdHlPcmlnaW4pLCBuYXZpZ2F0aW9uSUQsIHByb3Zpc2lvbmFsVVJMLCBlcnJvciwg
d2lsbENvbnRpbnVlTG9hZGluZywgdXNlckRhdGEpOyAvLyBNYXkgZGVsZXRlIHx0aGlzfC4KIH0K
IAotdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZy
YW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJ
bmZvLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0lu
c2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYg
dXNlckRhdGEpCit2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJh
bWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWlu
dDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0
aWZpY2F0ZUluZm8sIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250YWluc1BsdWdpbkRvY3Vt
ZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2Vj
dXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIGlmICghdmFsaWRh
dGVJbnB1dChmcmFtZUlELCBuYXZpZ2F0aW9uSUQpKQogICAgICAgICByZXR1cm47CkBAIC0yNzQs
NyArMjc0LDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZAogICAg
IG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlSUQpOwogCiAgICAgbV93YXNDb21taXR0
ZWQgPSB0cnVlOwotICAgIG1fcGFnZS5jb21taXRQcm92aXNpb25hbFBhZ2UoZnJhbWVJRCwgbmF2
aWdhdGlvbklELCBtaW1lVHlwZSwgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIGZyYW1l
TG9hZFR5cGUsIGNlcnRpZmljYXRlSW5mbywgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgZm9yY2Vk
SGFzSW5zZWN1cmVDb250ZW50LCB1c2VyRGF0YSk7IC8vIFdpbGwgZGVsZXRlIHx0aGlzfC4KKyAg
ICBtX3BhZ2UuY29tbWl0UHJvdmlzaW9uYWxQYWdlKGZyYW1lSUQsIG5hdmlnYXRpb25JRCwgbWlt
ZVR5cGUsIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBmcmFtZUxvYWRUeXBlLCBjZXJ0
aWZpY2F0ZUluZm8sIHVzZWRMZWdhY3lUTFMsIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIGZvcmNl
ZEhhc0luc2VjdXJlQ29udGVudCwgdXNlckRhdGEpOyAvLyBXaWxsIGRlbGV0ZSB8dGhpc3wuCiB9
CiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25E
YXRhKGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmIHN0b3JlLCBGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQ
YWdlUHJveHkuaAkocmV2aXNpb24gMjU1NTgwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UHJvdmlzaW9uYWxQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDcgKzEyMiw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcsIFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRDcmVhdGVNYWluRnJhbWUoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IFVSTCYmLCBVUkwmJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmKTsKLSAgICB2b2lk
IGRpZENvbW1pdExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3Rv
bUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6
Q2VydGlmaWNhdGVJbmZvJiwgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxX
ZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgY29u
c3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRpZENvbW1pdExvYWRGb3JGcmFtZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVM
b2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiwgYm9vbCB1c2VkTGVnYWN5
VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0lu
c2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYp
OwogICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9y
aWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJM
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgV2ViQ29yZTo6V2lsbENvbnRpbnVlTG9h
ZGluZywgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIHN0YXJ0VVJMU2NoZW1lVGFzayhVUkxT
Y2hlbWVUYXNrUGFyYW1ldGVycyYmKTsKICAgICB2b2lkIGJhY2tGb3J3YXJkR29Ub0l0ZW0oY29u
c3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIGNvbnN0IFdlYkJhY2tGb3J3YXJkTGlz
dENvdW50cyYpPiYmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAkocmV2aXNpb24gMjU1NTgwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE1Nyw3ICszMTU3LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpbwogICAgIHNlbmRlci0+c2VuZChhY3Rpb24s
IG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSA6IDAsIGRvd25sb2FkSUQs
IFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpjb21t
aXRQcm92aXNpb25hbFBhZ2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRl
bnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlm
aWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwg
T3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNv
bnRlbnQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpjb21t
aXRQcm92aXNpb25hbFBhZ2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRl
bnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlm
aWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250
YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+
IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewog
ICAgIEFTU0VSVChtX3Byb3Zpc2lvbmFsUGFnZSk7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAiY29tbWl0UHJvdmlzaW9uYWxQYWdlOiBuZXdQSUQgPSAlaSIsIG1fcHJvdmlz
aW9uYWxQYWdlLT5wcm9jZXNzKCkucHJvY2Vzc0lkZW50aWZpZXIoKSk7CkBAIC0zMTkxLDcgKzMx
OTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlCiAgICAgY29u
c3QgYXV0byBvbGRXZWJQYWdlSUQgPSBtX3dlYlBhZ2VJRDsKICAgICBzd2FwVG9Qcm92aXNpb25h
bFBhZ2Uoc3RkOjpleGNoYW5nZShtX3Byb3Zpc2lvbmFsUGFnZSwgbnVsbHB0cikpOwogCi0gICAg
ZGlkQ29tbWl0TG9hZEZvckZyYW1lKGZyYW1lSUQsIG5hdmlnYXRpb25JRCwgbWltZVR5cGUsIGZy
YW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBmcmFtZUxvYWRUeXBlLCBjZXJ0aWZpY2F0ZUlu
Zm8sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgdXNl
ckRhdGEpOworICAgIGRpZENvbW1pdExvYWRGb3JGcmFtZShmcmFtZUlELCBuYXZpZ2F0aW9uSUQs
IG1pbWVUeXBlLCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgZnJhbWVMb2FkVHlwZSwg
Y2VydGlmaWNhdGVJbmZvLCB1c2VkTGVnYWN5VExTLCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBm
b3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIHVzZXJEYXRhKTsKIAogICAgIG1faW5zcGVjdG9yQ29u
dHJvbGxlci0+ZGlkQ29tbWl0UHJvdmlzaW9uYWxQYWdlKG9sZFdlYlBhZ2VJRCwgbV93ZWJQYWdl
SUQpOwogfQpAQCAtNDQ3Nyw3ICs0NDc3LDcgQEAgc3RhdGljIE9wdGlvblNldDxDcm9zc1NpdGVO
YXZpZ2F0aW9uRGF0YQogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRM
b2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92
aWRlciwgdWludDMyX3Qgb3BhcXVlRnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlm
aWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwg
T3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50PiBoYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVz
ZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJh
bWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWlu
dDMyX3Qgb3BhcXVlRnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZv
JiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250YWluc1BsdWdp
bkRvY3VtZW50LCBPcHRpb25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+IGhhc0luc2VjdXJlQ29udGVu
dCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIExPRyhMb2FkaW5nLCAiKExvYWRp
bmcpIFdlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBkaWRDb21taXRMb2FkRm9yRnJhbWUgaW4gbmF2
aWdhdGlvbiAlIiBQUkl1NjQsIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uSUQp
OwogICAgIExPRyhCYWNrRm9yd2FyZCwgIihCYWNrL0ZvcndhcmQpIEFmdGVyIGxvYWQgY29tbWl0
LCBiYWNrL2ZvcndhcmQgbGlzdCBpcyBub3c6JXMiLCBtX2JhY2tGb3J3YXJkTGlzdC0+bG9nZ2lu
Z1N0cmluZygpKTsKQEAgLTQ1MTksNyArNDUxOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRD
b21taXRMb2FkRm9yRnJhbWUKICAgICBib29sIG1hcmtQYWdlSW5zZWN1cmUgPSBoYXNJbnNlY3Vy
ZUNvbnRlbnQgPyBoYXNJbnNlY3VyZUNvbnRlbnQudmFsdWUoKSA9PSBIYXNJbnNlY3VyZUNvbnRl
bnQ6OlllcyA6IG1fdHJlYXRzU0hBMUNlcnRpZmljYXRlc0FzSW5zZWN1cmUgJiYgY2VydGlmaWNh
dGVJbmZvLmNvbnRhaW5zTm9uUm9vdFNIQTFTaWduZWRDZXJ0aWZpY2F0ZSgpOwogCiAgICAgaWYg
KGZyYW1lLT5pc01haW5GcmFtZSgpKSB7Ci0gICAgICAgIG1fcGFnZUxvYWRTdGF0ZS5kaWRDb21t
aXRMb2FkKHRyYW5zYWN0aW9uLCB3ZWJDZXJ0aWZpY2F0ZUluZm8sIG1hcmtQYWdlSW5zZWN1cmUp
OworICAgICAgICBtX3BhZ2VMb2FkU3RhdGUuZGlkQ29tbWl0TG9hZCh0cmFuc2FjdGlvbiwgd2Vi
Q2VydGlmaWNhdGVJbmZvLCBtYXJrUGFnZUluc2VjdXJlLCB1c2VkTGVnYWN5VExTKTsKICAgICAg
ICAgbV9zaG91bGRTdXBwcmVzc05leHRBdXRvbWF0aWNOYXZpZ2F0aW9uU25hcHNob3QgPSBmYWxz
ZTsKICAgICB9IGVsc2UgaWYgKG1hcmtQYWdlSW5zZWN1cmUpCiAgICAgICAgIG1fcGFnZUxvYWRT
dGF0ZS5kaWREaXNwbGF5T3JSdW5JbnNlY3VyZUNvbnRlbnQodHJhbnNhY3Rpb24pOwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI1NTU4MCkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTg2LDcgKzE1ODYsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIFByb3Zpc2lvbmFsUGFn
ZVByb3h5KiBwcm92aXNpb25hbFBhZ2VQcm94eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdmlzaW9u
YWxQYWdlLmdldCgpOyB9Ci0gICAgdm9pZCBjb21taXRQcm92aXNpb25hbFBhZ2UoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1l
TG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYsIGJvb2wgY29udGFpbnNQ
bHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3Jj
ZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBjb21taXRQ
cm92aXNpb25hbFBhZ2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50
UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmlj
YXRlSW5mbyYsIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50
LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJl
Q29udGVudCwgY29uc3QgVXNlckRhdGEmKTsKIAogICAgIC8vIExvZ2ljIHNoYXJlZCBiZXR3ZWVu
IHRoZSBXZWJQYWdlUHJveHkgYW5kIHRoZSBQcm92aXNpb25hbFBhZ2VQcm94eS4KICAgICB2b2lk
IGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94
eT4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVS
TCYmLCBVUkwmJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmKTsKQEAgLTE3MzYsNyAr
MTczNiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZy
YW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRDaGFuZ2VQcm92aXNp
b25hbFVSTEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBVUkwmJik7CiAgICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBm
cmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYg
cHJvdmlzaW9uYWxVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBXZWJDb3JlOjpX
aWxsQ29udGludWVMb2FkaW5nLCBjb25zdCBVc2VyRGF0YSYpOwotICAgIHZvaWQgZGlkQ29tbWl0
TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFBy
b3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0
ZUluZm8mLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhh
c0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0
YSYpOworICAgIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29s
IGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBj
b25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mLCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wg
Y29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250
ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9p
ZCBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZEZp
bmlzaExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZEZhaWxMb2FkRm9yRnJhbWUo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBVc2VyRGF0YSYpOwpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24g
MjU1NTgwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNyArMTI2LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZVByb3h5IHsKICAgICBEaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciBmcmFtZUlEKQogICAgIERpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJh
bWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgVVJMIHVybCkKICAgICBEaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBTdHJpbmcgcHJv
dmlzaW9uYWxVUkwsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIGVudW06Ym9vbCBXZWJD
b3JlOjpXaWxsQ29udGludWVMb2FkaW5nIHdpbGxDb250aW51ZUxvYWRpbmcsIFdlYktpdDo6VXNl
ckRhdGEgdXNlckRhdGEpCi0gICAgRGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFN0cmluZyBtaW1lVHlw
ZSwgYm9vbCBoYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGxvYWRUeXBlLCBXZWJD
b3JlOjpDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvLCBib29sIGNvbnRhaW5zUGx1Z2lu
RG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFz
SW5zZWN1cmVDb250ZW50LCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQorICAgIERpZENvbW1p
dExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBTdHJpbmcgbWltZVR5cGUsIGJvb2wgaGFzQ3VzdG9tQ29udGVudFByb3Zp
ZGVyLCB1aW50MzJfdCBsb2FkVHlwZSwgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvIGNlcnRpZmlj
YXRlSW5mbywgYm9vbCB1c2VkTGVnYWN5VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQs
IE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVD
b250ZW50LCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIERpZEZhaWxMb2FkRm9yRnJh
bWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0
YSkKICAgICBEaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJLaXQ6OlVzZXJEYXRhIHVz
ZXJEYXRhKQogICAgIERpZEZpbmlzaExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJE
YXRhKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAyNTU1
ODApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NjAsNyArNTYwLDcgQEAgdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDbwogICAgIHdlYlBhZ2UtPnNhbmRib3hF
eHRlbnNpb25UcmFja2VyKCkuZGlkQ29tbWl0UHJvdmlzaW9uYWxMb2FkKG1fZnJhbWUpOwogCiAg
ICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCi0gICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpEaWRDb21taXRMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBk
b2N1bWVudExvYWRlci5uYXZpZ2F0aW9uSUQoKSwgZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKS5t
aW1lVHlwZSgpLCBtX2ZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBzdGF0aWNfY2FzdDx1
aW50MzJfdD4obV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmxvYWRUeXBlKCkpLCB2YWx1
ZU9yQ29tcHV0ZShkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLmNlcnRpZmljYXRlSW5mbygpLCBb
XSB7IHJldHVybiBDZXJ0aWZpY2F0ZUluZm8oKTsgfSksIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5k
b2N1bWVudCgpLT5pc1BsdWdpbkRvY3VtZW50KCksIGhhc0luc2VjdXJlQ29udGVudCwgVXNlckRh
dGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2Vy
RGF0YS5nZXQoKSkuZ2V0KCkpKSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEaWRDb21taXRMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBkb2N1bWVu
dExvYWRlci5uYXZpZ2F0aW9uSUQoKSwgZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKS5taW1lVHlw
ZSgpLCBtX2ZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBzdGF0aWNfY2FzdDx1aW50MzJf
dD4obV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmxvYWRUeXBlKCkpLCB2YWx1ZU9yQ29t
cHV0ZShkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLmNlcnRpZmljYXRlSW5mbygpLCBbXSB7IHJl
dHVybiBDZXJ0aWZpY2F0ZUluZm8oKTsgfSksIGRvY3VtZW50TG9hZGVyLnJlc3BvbnNlKCkudXNl
ZExlZ2FjeVRMUygpLCBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKS0+aXNQbHVnaW5E
b2N1bWVudCgpLCBoYXNJbnNlY3VyZUNvbnRlbnQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkp
OwogICAgIHdlYlBhZ2UtPmRpZENvbW1pdExvYWQobV9mcmFtZSk7CiB9CiAKSW5kZXg6IFRvb2xz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NTY4
MikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisy
MDIwLTAyLTA0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgRml4IHJhY2UgY29uZGl0aW9uIGZvciBXS1dlYlZpZXcuX25lZ290aWF0ZWRMZWdh
Y3lUTFMgd2hlbiBsb2FkaW5nIG1haW4gcmVzb3VvcmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcyMDcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIVFRQU2VydmVyIG5vdyBzdXBwb3J0cyBIVFRQUy4g
VGVsbCB5b3VyIGZyaWVuZHMhCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0NoYWxsZW5nZS5tbToKKyAgICAgICAgKHRlc3RDZXJ0aWZpY2F0ZSk6CisgICAgICAg
ICh0ZXN0SWRlbnRpdHkpOgorICAgICAgICAoY3JlZGVudGlhbFdpdGhJZGVudGl0eSk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UTFNEZXByZWNhdGlvbi5tbToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OndlYlZpZXdXaXRoTmF2aWdhdGlvbkRlbGVnYXRlKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
Y29jb2EvSFRUUFNlcnZlci5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNl
cnZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OkhUVFBTZXJ2ZXIp
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6cmVxdWVzdCBjb25zdCk6CisK
IDIwMjAtMDItMDQgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAg
ICAgICAgIFtDTWFrZV0gQWRkIENhaXJvOjpDYWlybyB0YXJnZXQKSW5kZXg6IFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2hhbGxlbmdlLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2hhbGxlbmdlLm1tCShyZXZpc2lv
biAyNTU1ODApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NoYWxs
ZW5nZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogCiAjaW1wb3J0ICJjb25m
aWcuaCIKIAorI2ltcG9ydCAiSFRUUFNlcnZlci5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRp
ZXMuaCIKICNpbXBvcnQgIlRDUFNlcnZlci5oIgogI2ltcG9ydCAiVGVzdC5oIgpAQCAtNDMsMTEg
KzQ0LDE0IEBACiAKIHN0YXRpYyBib29sIG5hdmlnYXRpb25GaW5pc2hlZDsKIAotc3RhdGljIFJl
dGFpblB0cjxOU1VSTENyZWRlbnRpYWw+IGNyZWRlbnRpYWxXaXRoSWRlbnRpdHkoKQorc3RhdGlj
IFJldGFpblB0cjxTZWNDZXJ0aWZpY2F0ZVJlZj4gdGVzdENlcnRpZmljYXRlKCkKIHsKICAgICBh
dXRvIGNlcnRpZmljYXRlQnl0ZXMgPSBUZXN0V2ViS2l0QVBJOjpUQ1BTZXJ2ZXI6OnRlc3RDZXJ0
aWZpY2F0ZSgpOwotICAgIGF1dG8gY2VydGlmaWNhdGUgPSBhZG9wdENGKFNlY0NlcnRpZmljYXRl
Q3JlYXRlV2l0aERhdGEobnVsbHB0ciwgKF9fYnJpZGdlIENGRGF0YVJlZilbTlNEYXRhIGRhdGFX
aXRoQnl0ZXM6Y2VydGlmaWNhdGVCeXRlcy5kYXRhKCkgbGVuZ3RoOmNlcnRpZmljYXRlQnl0ZXMu
c2l6ZSgpXSkpOwotICAgIAorICAgIHJldHVybiBhZG9wdENGKFNlY0NlcnRpZmljYXRlQ3JlYXRl
V2l0aERhdGEobnVsbHB0ciwgKF9fYnJpZGdlIENGRGF0YVJlZilbTlNEYXRhIGRhdGFXaXRoQnl0
ZXM6Y2VydGlmaWNhdGVCeXRlcy5kYXRhKCkgbGVuZ3RoOmNlcnRpZmljYXRlQnl0ZXMuc2l6ZSgp
XSkpOworfQorCitSZXRhaW5QdHI8U2VjSWRlbnRpdHlSZWY+IHRlc3RJZGVudGl0eSgpCit7CiAg
ICAgYXV0byBwcml2YXRlS2V5Qnl0ZXMgPSBUZXN0V2ViS2l0QVBJOjpUQ1BTZXJ2ZXI6OnRlc3RQ
cml2YXRlS2V5KCk7CiAgICAgTlNEYXRhICpkZXJFbmNvZGVkUHJpdmF0ZUtleSA9IFtOU0RhdGEg
ZGF0YVdpdGhCeXRlczpwcml2YXRlS2V5Qnl0ZXMuZGF0YSgpIGxlbmd0aDpwcml2YXRlS2V5Qnl0
ZXMuc2l6ZSgpXTsKICAgICBOU0RpY3Rpb25hcnkqIG9wdGlvbnMgPSBAewpAQCAtNjEsMTAgKzY1
LDE1IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNVUkxDcmVkZW50aWFsPiBjcmVkZW4KICAgICBFWFBF
Q1RfTlVMTChlcnJvcik7CiAgICAgRVhQRUNUX05PVF9OVUxMKHByaXZhdGVLZXkuZ2V0KCkpOwog
Ci0gICAgYXV0byBpZGVudGl0eSA9IGFkb3B0Q0YoU2VjSWRlbnRpdHlDcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgY2VydGlmaWNhdGUuZ2V0KCksIHByaXZhdGVLZXkuZ2V0KCkpKTsKKyAgICBy
ZXR1cm4gYWRvcHRDRihTZWNJZGVudGl0eUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB0ZXN0
Q2VydGlmaWNhdGUoKS5nZXQoKSwgcHJpdmF0ZUtleS5nZXQoKSkpOworfQorCitzdGF0aWMgUmV0
YWluUHRyPE5TVVJMQ3JlZGVudGlhbD4gY3JlZGVudGlhbFdpdGhJZGVudGl0eSgpCit7CisgICAg
YXV0byBpZGVudGl0eSA9IHRlc3RJZGVudGl0eSgpOwogICAgIEVYUEVDVF9OT1RfTlVMTChpZGVu
dGl0eSk7CiAgICAgCi0gICAgcmV0dXJuIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbFdpdGhJ
ZGVudGl0eTppZGVudGl0eS5nZXQoKSBjZXJ0aWZpY2F0ZXM6QFsoaWQpY2VydGlmaWNhdGUuZ2V0
KCldIHBlcnNpc3RlbmNlOk5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZV07CisgICAgcmV0
dXJuIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbFdpdGhJZGVudGl0eTppZGVudGl0eS5nZXQo
KSBjZXJ0aWZpY2F0ZXM6QFsoaWQpdGVzdENlcnRpZmljYXRlKCkuZ2V0KCldIHBlcnNpc3RlbmNl
Ok5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZV07CiB9CiAKIEBpbnRlcmZhY2UgQ2hhbGxl
bmdlRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+CkluZGV4OiBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RMU0RlcHJlY2F0aW9uLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVExTRGVwcmVj
YXRpb24ubW0JKHJldmlzaW9uIDI1NTU4MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvVExTRGVwcmVjYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3
LDcgQEAKIAogI2lmIEhBVkUoU1NMKQogCisjaW1wb3J0ICJIVFRQU2VydmVyLmgiCiAjaW1wb3J0
ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVENQU2VydmVyLmgiCiAjaW1wb3J0ICJU
ZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCkBAIC0zNywxMyArMzgsMTQgQEAKICNpbXBvcnQgPFdl
YktpdC9XZWJLaXQuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL3RleHQv
U3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
I2ltcG9ydCA8V2ViS2l0L1dlYlVJS2l0U3VwcG9ydC5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkNv
cmVUaHJlYWQuaD4KICNlbmRpZgogCi0jaWYgSEFWRShUTFNfUFJPVE9DT0xfVkVSU0lPTl9UKQor
I2lmIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkgfHwgSEFWRShORVRXT1JLX0ZSQU1FV09S
SykKIEBpbnRlcmZhY2UgVExTT2JzZXJ2ZXIgOiBOU09iamVjdAogLSAodm9pZCl3YWl0VW50aWxO
ZWdvdGlhdGVkTGVnYWN5VExTQ2hhbmdlZDsKIEBlbmQKQEAgLTIyOCwxMyArMjMwLDkgQEAgVEVT
VChUTFNWZXJzaW9uLCBESVNBQkxFRF9OYXZpZ2F0aW9uRGVsZQogfQogCiAjaWYgSEFWRShUTFNf
UFJPVE9DT0xfVkVSU0lPTl9UKQotVEVTVChUTFNWZXJzaW9uLCBOZWdvdGlhdGVkTGVnYWN5VExT
KQotewotICAgIFRDUFNlcnZlciBzZXJ2ZXIoVENQU2VydmVyOjpQcm90b2NvbDo6SFRUUFMsIFtd
IChTU0wgKnNzbCkgewotICAgICAgICBUQ1BTZXJ2ZXI6OnJlc3BvbmRXaXRoT0soc3NsKTsKLSAg
ICAgICAgVENQU2VydmVyOjpyZXNwb25kV2l0aE9LKHNzbCk7Ci0gICAgfSwgdGxzMV8xKTsKIAor
c3RhdGljIHN0ZDo6cGFpcjxSZXRhaW5QdHI8V0tXZWJWaWV3PiwgUmV0YWluUHRyPFRlc3ROYXZp
Z2F0aW9uRGVsZWdhdGU+PiB3ZWJWaWV3V2l0aE5hdmlnYXRpb25EZWxlZ2F0ZSgpCit7CiAgICAg
YXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7CiAg
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwogICAgIFt3ZWJWaWV3
IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CkBAIC0yNDIsNiArMjQwLDIw
IEBAIFRFU1QoVExTVmVyc2lvbiwgTmVnb3RpYXRlZExlZ2FjeVRMUykKICAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2Qs
IE5TVVJMQXV0aGVudGljYXRpb25NZXRob2RTZXJ2ZXJUcnVzdCk7CiAgICAgICAgIGNhbGxiYWNr
KE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50aWFs
IGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0
XSk7CiAgICAgfV07CisgICAgcmV0dXJuIHsgd2ViVmlldywgZGVsZWdhdGUgfTsKK30KKworI2Vu
ZGlmIC8vIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkgfHwgSEFWRShORVRXT1JLX0ZSQU1F
V09SSykKKworI2lmIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkKKworVEVTVChUTFNWZXJz
aW9uLCBOZWdvdGlhdGVkTGVnYWN5VExTKQoreworICAgIEhUVFBTZXJ2ZXIgc2VydmVyKHsKKyAg
ICAgICAgeyAiLyIsIHsgImhlbGxvIiB9IH0KKyAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6
SHR0cHNXaXRoTGVnYWN5VExTKTsKKworICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHdl
YlZpZXdXaXRoTmF2aWdhdGlvbkRlbGVnYXRlKCk7CiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0
ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNT
dHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlci5w
b3J0KCldXV07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CiAKQEAgLTI2Miw3
ICsyNzQsNjQgQEAgVEVTVChUTFNWZXJzaW9uLCBOZWdvdGlhdGVkTGVnYWN5VExTKQogCiAgICAg
W3dlYlZpZXcgcmVtb3ZlT2JzZXJ2ZXI6b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAIl9uZWdv
dGlhdGVkTGVnYWN5VExTIl07CiB9Ci0jZW5kaWYKKworI2VuZGlmIC8vIEhBVkUoVExTX1BST1RP
Q09MX1ZFUlNJT05fVCkKKworI2lmIEhBVkUoTkVUV09SS19GUkFNRVdPUkspICYmIEhBVkUoVExT
X1BST1RPQ09MX1ZFUlNJT05fVCkKKworVEVTVChUTFNWZXJzaW9uLCBOYXZpZ2F0ZUJhY2spCit7
CisgICAgSFRUUFNlcnZlciBsZWdhY3lUTFNTZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyAiaGVs
bG8iIH0gfQorICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwc1dpdGhMZWdhY3lUTFMp
OworCisgICAgSFRUUFNlcnZlciBtb2Rlcm5UTFNTZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyAi
aGVsbG8iIH0gfQorICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CisgICAgCisg
ICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gd2ViVmlld1dpdGhOYXZpZ2F0aW9uRGVsZWdh
dGUoKTsKKyAgICBhdXRvIG9ic2VydmVyID0gYWRvcHROUyhbVExTT2JzZXJ2ZXIgbmV3XSk7Cisg
ICAgW3dlYlZpZXcgYWRkT2JzZXJ2ZXI6b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAIl9uZWdv
dGlhdGVkTGVnYWN5VExTIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29u
dGV4dDpuaWxdOworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6bGVnYWN5VExTU2VydmVyLnJl
cXVlc3QoKV07CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IF9uZWdvdGlhdGVkTGVnYWN5VExT
XSk7CisgICAgW2RlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKyAgICBFWFBF
Q1RfVFJVRShbd2ViVmlldyBfbmVnb3RpYXRlZExlZ2FjeVRMU10pOworCisgICAgW3dlYlZpZXcg
bG9hZFJlcXVlc3Q6bW9kZXJuVExTU2VydmVyLnJlcXVlc3QoKV07CisgICAgW2RlbGVnYXRlIHdh
aXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgX25l
Z290aWF0ZWRMZWdhY3lUTFNdKTsKKworICAgIFt3ZWJWaWV3IGdvQmFja107CisgICAgW29ic2Vy
dmVyIHdhaXRVbnRpbE5lZ290aWF0ZWRMZWdhY3lUTFNDaGFuZ2VkXTsKKyAgICBFWFBFQ1RfVFJV
RShbd2ViVmlldyBfbmVnb3RpYXRlZExlZ2FjeVRMU10pOworCisgICAgW3dlYlZpZXcgcmVtb3Zl
T2JzZXJ2ZXI6b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAIl9uZWdvdGlhdGVkTGVnYWN5VExT
Il07Cit9CisKK1RFU1QoVExTVmVyc2lvbiwgU3VicmVzb3VyY2UpCit7CisgICAgSFRUUFNlcnZl
ciBsZWdhY3lUTFNTZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyAiaGVsbG8iIH0gfQorICAgIH0s
IEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwc1dpdGhMZWdhY3lUTFMpOworCisgICAgSFRUUFNl
cnZlciBtb2Rlcm5UTFNTZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyBtYWtlU3RyaW5nKCI8c2Ny
aXB0PmZldGNoKCdodHRwczovLzEyNy4wLjAuMToiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGVn
YWN5VExTU2VydmVyLnBvcnQoKSksICIvJyx7bW9kZTonbm8tY29ycyd9KTwvc2NyaXB0PiIpIH0g
fQorICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CisgICAgCisgICAgYXV0byBb
d2ViVmlldywgZGVsZWdhdGVdID0gd2ViVmlld1dpdGhOYXZpZ2F0aW9uRGVsZWdhdGUoKTsKKyAg
ICBhdXRvIG9ic2VydmVyID0gYWRvcHROUyhbVExTT2JzZXJ2ZXIgbmV3XSk7CisgICAgW3dlYlZp
ZXcgYWRkT2JzZXJ2ZXI6b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAIl9uZWdvdGlhdGVkTGVn
YWN5VExTIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDpuaWxd
OworCisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IF9uZWdvdGlhdGVkTGVnYWN5VExTXSk7Cisg
ICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6bW9kZXJuVExTU2VydmVyLnJlcXVlc3QoKV07CisgICAg
d2hpbGUgKCFbd2ViVmlldyBfbmVnb3RpYXRlZExlZ2FjeVRMU10pCisgICAgICAgIFtvYnNlcnZl
ciB3YWl0VW50aWxOZWdvdGlhdGVkTGVnYWN5VExTQ2hhbmdlZF07CisKKyAgICBbd2ViVmlldyBy
ZW1vdmVPYnNlcnZlcjpvYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOkAiX25lZ290aWF0ZWRMZWdh
Y3lUTFMiXTsKK30KKworI2VuZGlmIC8vIEhBVkUoTkVUV09SS19GUkFNRVdPUkspICYmIEhBVkUo
VExTX1BST1RPQ09MX1ZFUlNJT05fVCkKIAogLy8gRklYTUU6IEFkZCBzb21lIHRlc3RzIGZvciBX
S1dlYlZpZXcuaGFzT25seVNlY3VyZUNvbnRlbnQKIApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQ
SS9jb2NvYS9IVFRQU2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9j
b2NvYS9IVFRQU2VydmVyLmgJKHJldmlzaW9uIDI1NTU4MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvSFRUUFNlcnZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw4IEBAIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIGNsYXNzIEhUVFBTZXJ2ZXIgewogcHVibGljOgogICAg
IHN0cnVjdCBIVFRQUmVzcG9uc2U7Ci0gICAgSFRUUFNlcnZlcihzdGQ6OmluaXRpYWxpemVyX2xp
c3Q8c3RkOjpwYWlyPFN0cmluZywgSFRUUFJlc3BvbnNlPj4pOworICAgIGVudW0gY2xhc3MgUHJv
dG9jb2wgOiB1aW50OF90IHsgSHR0cCwgSHR0cHMsIEh0dHBzV2l0aExlZ2FjeVRMUyB9OworICAg
IEhUVFBTZXJ2ZXIoc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxTdHJpbmcsIEhUVFBS
ZXNwb25zZT4+LCBQcm90b2NvbCA9IFByb3RvY29sOjpIdHRwKTsKICAgICB1aW50MTZfdCBwb3J0
KCkgY29uc3Q7CiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0KCkgY29uc3Q7CiAgICAgCkBAIC00
Niw2ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXNwb25kVG9SZXF1ZXN0cyhud19jb25u
ZWN0aW9uX3QpOwogICAgIAogICAgIFJldGFpblB0cjxud19saXN0ZW5lcl90PiBtX2xpc3RlbmVy
OworICAgIGNvbnN0IFByb3RvY29sIG1fcHJvdG9jb2w7CiAgICAgY29uc3QgSGFzaE1hcDxTdHJp
bmcsIEhUVFBSZXNwb25zZT4gbV9yZXF1ZXN0UmVzcG9uc2VNYXA7CiB9OwogCkBAIC03NCwzICs3
Niw1IEBAIHN0cnVjdCBIVFRQU2VydmVyOjpIVFRQUmVzcG9uc2UgewogfSAvLyBuYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSQogCiAjZW5kaWYgLy8gSEFWRShORVRXT1JLX0ZSQU1FV09SSykKKworUmV0
YWluUHRyPFNlY0lkZW50aXR5UmVmPiB0ZXN0SWRlbnRpdHkoKTsKSW5kZXg6IFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0JKHJldmlzaW9uIDI1NTU4MCkKKysrIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMzMsMTUg
KzMzLDI3IEBACiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotSFRUUFNlcnZlcjo6SFRU
UFNlcnZlcihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPFN0cmluZywgSFRUUFJlc3Bv
bnNlPj4gcmVzcG9uc2VzKQotICAgIDogbV9yZXF1ZXN0UmVzcG9uc2VNYXAoW10oc3RkOjppbml0
aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxTdHJpbmcsIEhUVFBTZXJ2ZXI6OkhUVFBSZXNwb25zZT4+
IGxpc3QpIHsKK0hUVFBTZXJ2ZXI6OkhUVFBTZXJ2ZXIoc3RkOjppbml0aWFsaXplcl9saXN0PHN0
ZDo6cGFpcjxTdHJpbmcsIEhUVFBSZXNwb25zZT4+IHJlc3BvbnNlcywgUHJvdG9jb2wgcHJvdG9j
b2wpCisgICAgOiBtX3Byb3RvY29sKHByb3RvY29sKQorICAgICwgbV9yZXF1ZXN0UmVzcG9uc2VN
YXAoW10oc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxTdHJpbmcsIEhUVFBTZXJ2ZXI6
OkhUVFBSZXNwb25zZT4+IGxpc3QpIHsKICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIEhUVFBTZXJ2
ZXI6OkhUVFBSZXNwb25zZT4gbWFwOwogICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBsaXN0KQog
ICAgICAgICAgICAgbWFwLmFkZChwYWlyLmZpcnN0LCBwYWlyLnNlY29uZCk7CiAgICAgICAgIHJl
dHVybiBtYXA7CiAgICAgfShyZXNwb25zZXMpKQogewotICAgIGF1dG8gcGFyYW1ldGVycyA9IGFk
b3B0TlMobndfcGFyYW1ldGVyc19jcmVhdGVfc2VjdXJlX3RjcChOV19QQVJBTUVURVJTX0RJU0FC
TEVfUFJPVE9DT0wsIE5XX1BBUkFNRVRFUlNfREVGQVVMVF9DT05GSUdVUkFUSU9OKSk7CisgICAg
YXV0byBjb25maWd1cmVUTFMgPSBwcm90b2NvbCA9PSBQcm90b2NvbDo6SHR0cCA/IE5XX1BBUkFN
RVRFUlNfRElTQUJMRV9QUk9UT0NPTCA6IF4obndfcHJvdG9jb2xfb3B0aW9uc190IHByb3RvY29s
T3B0aW9ucykgeworICAgICAgICBhdXRvIG9wdGlvbnMgPSBhZG9wdE5TKG53X3Rsc19jb3B5X3Nl
Y19wcm90b2NvbF9vcHRpb25zKHByb3RvY29sT3B0aW9ucykpOworICAgICAgICBhdXRvIGlkZW50
aXR5ID0gYWRvcHROUyhzZWNfaWRlbnRpdHlfY3JlYXRlKHRlc3RJZGVudGl0eSgpLmdldCgpKSk7
CisgICAgICAgIHNlY19wcm90b2NvbF9vcHRpb25zX3NldF9sb2NhbF9pZGVudGl0eShvcHRpb25z
LmdldCgpLCBpZGVudGl0eS5nZXQoKSk7CisjaWYgSEFWRShUTFNfUFJPVE9DT0xfVkVSU0lPTl9U
KQorICAgICAgICBpZiAocHJvdG9jb2wgPT0gUHJvdG9jb2w6Okh0dHBzV2l0aExlZ2FjeVRMUykK
KyAgICAgICAgICAgIHNlY19wcm90b2NvbF9vcHRpb25zX3NldF9tYXhfdGxzX3Byb3RvY29sX3Zl
cnNpb24ob3B0aW9ucy5nZXQoKSwgdGxzX3Byb3RvY29sX3ZlcnNpb25fVExTdjEwKTsKKyNlbHNl
CisgICAgICAgIEFTU0VSVChwcm90b2NvbCAhPSBQcm90b2NvbDo6SHR0cHNXaXRoTGVnYWN5VExT
KTsKKyNlbmRpZgorICAgIH07CisgICAgYXV0byBwYXJhbWV0ZXJzID0gYWRvcHROUyhud19wYXJh
bWV0ZXJzX2NyZWF0ZV9zZWN1cmVfdGNwKGNvbmZpZ3VyZVRMUywgTldfUEFSQU1FVEVSU19ERUZB
VUxUX0NPTkZJR1VSQVRJT04pKTsKICAgICBtX2xpc3RlbmVyID0gYWRvcHROUyhud19saXN0ZW5l
cl9jcmVhdGUocGFyYW1ldGVycy5nZXQoKSkpOwogICAgIG53X2xpc3RlbmVyX3NldF9xdWV1ZSht
X2xpc3RlbmVyLmdldCgpLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsKICAgICBud19saXN0
ZW5lcl9zZXRfbmV3X2Nvbm5lY3Rpb25faGFuZGxlcihtX2xpc3RlbmVyLmdldCgpLCBeKG53X2Nv
bm5lY3Rpb25fdCBjb25uZWN0aW9uKSB7CkBAIC0xMjcsNyArMTM5LDE1IEBAIHVpbnQxNl90IEhU
VFBTZXJ2ZXI6OnBvcnQoKSBjb25zdAogCiBOU1VSTFJlcXVlc3QgKkhUVFBTZXJ2ZXI6OnJlcXVl
c3QoKSBjb25zdAogewotICAgIHJldHVybiBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltO
U1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cDovLzEy
Ny4wLjAuMTolZC8iLCBwb3J0KCldXV07CisgICAgTlNTdHJpbmcgKmZvcm1hdDsKKyAgICBzd2l0
Y2ggKG1fcHJvdG9jb2wpIHsKKyAgICBjYXNlIFByb3RvY29sOjpIdHRwOgorICAgICAgICBmb3Jt
YXQgPSBAImh0dHA6Ly8xMjcuMC4wLjE6JWQvIjsKKyAgICBjYXNlIFByb3RvY29sOjpIdHRwczoK
KyAgICBjYXNlIFByb3RvY29sOjpIdHRwc1dpdGhMZWdhY3lUTFM6CisgICAgICAgIGZvcm1hdCA9
IEAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIjsKKyAgICB9CisgICAgcmV0dXJuIFtOU1VSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6Zm9ybWF0LCBwb3J0KCldXV07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389704</attachid>
            <date>2020-02-04 14:03:06 -0800</date>
            <delta_ts>2020-02-04 14:51:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207207-20200204140305.patch</filename>
            <type>text/plain</type>
            <size>55222</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDIwLTAyLTA0ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRml4IHJhY2Ug
Y29uZGl0aW9uIGZvciBXS1dlYlZpZXcuX25lZ290aWF0ZWRMZWdhY3lUTFMgd2hlbiBsb2FkaW5n
IG1haW4gcmVzb3VvcmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDcyMDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmluY2x1ZGVDZXJ0aWZpY2F0ZUlu
Zm8gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJh
c2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjp1c2VkTGVnYWN5
VExTIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmRlY29k
ZSk6CisKIDIwMjAtMDItMDMgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIERvIG5vdCBjb3B5IGZlYXR1cmUgcG9saWN5IGluIGlzRmVhdHVyZVBvbGljeUFsbG93
ZWRCeURvY3VtZW50QW5kQWxsT3duZXJzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAkocmV2aXNpb24g
MjU1NTgwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3Bv
bnNlQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MSwxMSArMjYxLDEyIEBAIHZvaWQgUmVz
b3VyY2VSZXNwb25zZUJhc2U6OnNldFR5cGUoVHlwZSAKICAgICBtX3R5cGUgPSB0eXBlOwogfQog
Ci12b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjppbmNsdWRlQ2VydGlmaWNhdGVJbmZvKCkgY29u
c3QKK3ZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8oVXNl
ZExlZ2FjeVRMUyB1c2VkTGVnYWN5VExTKSBjb25zdAogewogICAgIGlmIChtX2NlcnRpZmljYXRl
SW5mbykKICAgICAgICAgcmV0dXJuOwogICAgIG1fY2VydGlmaWNhdGVJbmZvID0gc3RhdGljX2Nh
c3Q8Y29uc3QgUmVzb3VyY2VSZXNwb25zZSo+KHRoaXMpLT5wbGF0Zm9ybUNlcnRpZmljYXRlSW5m
bygpOworICAgIG1fdXNlZExlZ2FjeVRMUyA9IHVzZWRMZWdhY3lUTFM7CiB9CiAKIFN0cmluZyBS
ZXNvdXJjZVJlc3BvbnNlQmFzZTo6c3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25z
ZUJhc2UuaAkocmV2aXNpb24gMjU1NTgwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw4
IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiAKIGJvb2wgaXNTY3JpcHRBbGxvd2VkQnlOb3Nu
aWZmKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIAorZW51bSBjbGFzcyBVc2VkTGVnYWN5VExT
IDogYm9vbCB7IE5vLCBZZXMgfTsKKwogLy8gRG8gbm90IHVzZSB0aGlzIGNsYXNzIGRpcmVjdGx5
LCB1c2UgdGhlIGNsYXNzIFJlc291cmNlUmVzcG9uc2UgaW5zdGVhZAogY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZUJhc2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMTI3LDggKzEy
OSw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5h
bWUoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIHNhbml0aXplU3Vn
Z2VzdGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8oKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8oVXNlZExlZ2FjeVRMUyA9IFVzZWRMZWdhY3lUTFM6Ok5v
KSBjb25zdDsKICAgICBjb25zdCBPcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+JiBjZXJ0aWZpY2F0
ZUluZm8oKSBjb25zdCB7IHJldHVybiBtX2NlcnRpZmljYXRlSW5mbzsgfTsKKyAgICBib29sIHVz
ZWRMZWdhY3lUTFMoKSBjb25zdCB7IHJldHVybiBtX3VzZWRMZWdhY3lUTFMgPT0gVXNlZExlZ2Fj
eVRMUzo6WWVzOyB9CiAgICAgCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIHJldHVybiBwYXJzZWQg
dmFsdWVzIG9mIHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlIGhlYWRlcnMuCiAgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBjYWNoZUNvbnRyb2xDb250YWluc05vQ2FjaGUoKSBjb25zdDsKQEAgLTI0
Niw3ICsyNDksOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1JhbmdlUmVxdWVzdGVkIHsgZmFs
c2UgfTsKIAogcHJvdGVjdGVkOgotICAgIGludCBtX2h0dHBTdGF0dXNDb2RlIHsgMCB9OworICAg
IHNob3J0IG1faHR0cFN0YXR1c0NvZGUgeyAwIH07CisgICAgbXV0YWJsZSBVc2VkTGVnYWN5VExT
IG1fdXNlZExlZ2FjeVRMUyB7IFVzZWRMZWdhY3lUTFM6Ok5vIH07CiB9OwogCiBpbmxpbmUgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGEsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIGIpIHsgcmV0dXJuIFJlc291cmNlUmVzcG9uc2VCYXNlOjpjb21wYXJlKGEsIGIpOyB9
CkBAIC0yNzMsMTIgKzI3NywxMyBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjplbmNvZGUo
RW5jb2RlCiAgICAgaWYgKEVuY29kZXI6OmlzSVBDRW5jb2RlcikKICAgICAgICAgZW5jb2RlciA8
PCBtX25ldHdvcmtMb2FkTWV0cmljczsKIAotICAgIGVuY29kZXIgPDwgbV9odHRwU3RhdHVzQ29k
ZTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGludD4obV9odHRwU3RhdHVzQ29kZSk7CiAg
ICAgZW5jb2RlciA8PCBtX2NlcnRpZmljYXRlSW5mbzsKICAgICBlbmNvZGVyLmVuY29kZUVudW0o
bV9zb3VyY2UpOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShtX3R5cGUpOwogICAgIGVuY29kZXIu
ZW5jb2RlRW51bShtX3RhaW50aW5nKTsKLSAgICBlbmNvZGVyIDw8IG1faXNSZWRpcmVjdGVkOwor
ICAgIHVpbnQ4X3QgaXNSZWRpcmVjdGVkQW5kVXNlZExlZ2FjeVRMUyA9IChtX2lzUmVkaXJlY3Rl
ZCA/IDB4MSA6IDB4MCkgfCAobV91c2VkTGVnYWN5VExTID09IFVzZWRMZWdhY3lUTFM6OlllcyA/
IDB4MiA6IDB4MCk7CisgICAgZW5jb2RlciA8PCBpc1JlZGlyZWN0ZWRBbmRVc2VkTGVnYWN5VExT
OwogICAgIGVuY29kZXIgPDwgbV9pc1JhbmdlUmVxdWVzdGVkOwogfQogCkBAIC0zMTMsOCArMzE4
LDEwIEBAIGJvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmRlY29kZShEZWNvZGUKICAgICAvLyBU
aGUgbmV0d29ya0xvYWRNZXRyaWNzIGluZm8gaXMgb25seSBzZW5kIG92ZXIgSVBDIGFuZCBub3Qg
c3RvcmVkIGluIGRpc2sgY2FjaGUuCiAgICAgaWYgKERlY29kZXI6OmlzSVBDRGVjb2RlciAmJiAh
ZGVjb2Rlci5kZWNvZGUocmVzcG9uc2UubV9uZXR3b3JrTG9hZE1ldHJpY3MpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNwb25zZS5tX2h0dHBTdGF0
dXNDb2RlKSkKKyAgICBpbnQgaHR0cFN0YXR1c0NvZGU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShodHRwU3RhdHVzQ29kZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXNwb25zZS5t
X2h0dHBTdGF0dXNDb2RlID0gaHR0cFN0YXR1c0NvZGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXNwb25zZS5tX2NlcnRpZmljYXRlSW5mbykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShyZXNwb25zZS5tX3NvdXJjZSkpCkBAIC0zMjMsMTAg
KzMzMCwxMSBAQCBib29sIFJlc291cmNlUmVzcG9uc2VCYXNlOjpkZWNvZGUoRGVjb2RlCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShyZXNwb25zZS5t
X3RhaW50aW5nKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGJvb2wgaXNSZWRpcmVjdGVk
ID0gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShpc1JlZGlyZWN0ZWQpKQorICAgIHVp
bnQ4X3QgaXNSZWRpcmVjdGVkQW5kVXNlZExlZ2FjeVRMUyA9IDA7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShpc1JlZGlyZWN0ZWRBbmRVc2VkTGVnYWN5VExTKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIHJlc3BvbnNlLm1faXNSZWRpcmVjdGVkID0gaXNSZWRpcmVjdGVkOworICAgIHJl
c3BvbnNlLm1faXNSZWRpcmVjdGVkID0gaXNSZWRpcmVjdGVkQW5kVXNlZExlZ2FjeVRMUyAmIDB4
MTsKKyAgICByZXNwb25zZS5tX3VzZWRMZWdhY3lUTFMgPSAoaXNSZWRpcmVjdGVkQW5kVXNlZExl
Z2FjeVRMUyAmIDB4MikgPyBVc2VkTGVnYWN5VExTOjpZZXMgOiBVc2VkTGVnYWN5VExTOjpObzsK
IAogICAgIGJvb2wgaXNSYW5nZVJlcXVlc3RlZCA9IGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoaXNSYW5nZVJlcXVlc3RlZCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjU1NTgwKQor
KysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw3MCBA
QAorMjAyMC0wMi0wNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIEZpeCByYWNlIGNvbmRpdGlvbiBmb3IgV0tXZWJWaWV3Ll9uZWdvdGlhdGVk
TGVnYWN5VExTIHdoZW4gbG9hZGluZyBtYWluIHJlc291b3JjZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3MjA3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gUGFnZUxvYWRTdGF0ZTo6ZGlkQ29tbWl0
TG9hZCwgSSB3YXMgcmVzZXR0aW5nIHRoZSB2YWx1ZSBvZiBfbmVnb3RpYXRlZExlZ2FjeVRMUyB0
byBmYWxzZS4KKyAgICAgICAgVGhhdCBjcmVhdGVkIGEgcmFjZSBjb25kaXRpb24gd2hlbiBsb2Fk
aW5nIHRoZSBtYWluIHJlc291cmNlIGJlY2F1c2UgdGhlIE5ldHdvcmtQcm9jZXNzIHdvdWxkCisg
ICAgICAgIG1lc3NhZ2UgdGhlIFVJUHJvY2VzcyBzZXR0aW5nIF9uZWdvdGlhdGVkTGVnYWN5VExT
IHRvIGZhbHNlLCB3aGlsZSB0aGUgTmV0d29ya1Byb2Nlc3Mgd291bGQKKyAgICAgICAgbWVzc2Fn
ZSB0aGUgV2ViUHJvY2VzcyB3aGljaCB3b3VsZCBtZXNzYWdlIHRoZSBVSVByb2Nlc3MgdG8gY2Fs
bCBQYWdlTG9hZFN0YXRlOjpkaWRDb21taXRMb2FkCisgICAgICAgIHdoaWNoIHdvdWxkIHJlc2V0
IGl0IHRvIGZhbHNlLiAgTm93IGl0IHJlc2V0cyBpdCB0byB0aGUgY29ycmVjdCB2YWx1ZSwgd2hh
dGV2ZXIgaXQgaXMuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gbWFpbnRhaW4gYmluYXJ5IGNvbXBh
dGliaWxpdHkgd2l0aCBleGlzdGluZyBkaXNrIGNhY2hlcywgSSBidW5kbGUgdHdvIGJvb2xlYW5z
IHRvZ2V0aGVyCisgICAgICAgIHdoZW4gZW5jb2RpbmcuICBUaGlzIHJlc3VsdHMgaW4gZXhpc3Rp
bmcgZGlzayBjYWNoZXMgc2F5aW5nIHRoZXkgbG9hZGVkIG5vdGhpbmcgb3ZlciBsZWdhY3kgVExT
LAorICAgICAgICB3aGljaCBpcyBzb21ld2hhdCBjb3JyZWN0IGJlY2F1c2UgVExTIDEuMCBhbmQg
MS4xIHdlcmUgbm90IGRlcHJlY2F0ZWQgd2hlbiB0aGUgcmVzb3VyY2VzIHdlcmUgZmV0Y2hlZC4K
KyAgICAgICAgR29pbmcgZm9yd2FyZCwgdGhlIGJpdCB3aWxsIGJlIHNldCBhbmQgdGhlIGRpc2sg
Y2FjaGUgZW50cmllcyB3aWxsIHN0b3JlIHdoZXRoZXIgdGhleSB3ZXJlIGxvYWRlZAorICAgICAg
ICBvdmVyIGxlZ2FjeSBUTFMuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gbm90IGluY3JlYXNlIHRo
ZSBtZW1vcnkgZm9vdHByaW50IG9mIFJlc291cmNlUmVzcG9uc2UsIEkgY2hhbmdlZCBtX2h0dHBT
dGF0dXNDb2RlIGZyb20KKyAgICAgICAgYW4gaW50IHRvIGEgc2hvcnQuICBJdCBqdXN0IG5lZWRz
IHRvIGJlIGFibGUgdG8gY292ZXIgdGhlIHZhbHVlcyAwLTYwMCBvciBzbywgd2hpY2ggcmVhbGx5
IG9ubHkgbmVlZHMgMTAgYml0cy4KKworICAgICAgICBDb3ZlcmVkIGJ5IG5ldyBBUEkgdGVzdHMu
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJl
Y2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVm
bGlnaHRDaGVja2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNr
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6Om5lZ290aWF0ZWRMZWdhY3lU
TFMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFzay5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDbGllbnQ6Om5lZ290aWF0
ZWRMZWdhY3lUTFMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtEYXRhVGFza0Jsb2IuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tC
bG9iOjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6Om5vdGlmeURpZFJl
Y2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjp0aHJvdHRsZURl
bGF5Q29tcGxldGVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6Om5lZ290aWF0ZWRM
ZWdhY3lUTFMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQaW5nTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9QaW5nTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtE
YXRhVGFza0NvY29hLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjpk
aWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBV
UkxTZXNzaW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVSZXNwb25zZTpjb21wbGV0aW9uSGFuZGxlcjpd
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDdXJsOjppbnZva2VEaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNr
U291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmRpc3BhdGNo
RGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VMb2FkU3RhdGU6OmRpZENvbW1pdExvYWQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1By
b3Zpc2lvbmFsUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdl
UHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1Byb3Zp
c2lvbmFsUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKToKKwogMjAyMC0wMi0wMyAgU2Ft
IFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgU3RhcnQgc3BsaXR0aW5nIHBs
YXRmb3JtIHNwZWNpZmljIG92ZXJyaWRlcyBvZiBkZWZhdWx0IGVuYWJsZSBiZWhhdmlvciBpbnRv
IHRoZWlyIG93biBmaWxlcwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAkocmV2aXNpb24g
MjU1NTgwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZs
aWdodENoZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBO
ZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJlYwogICAgIG1fbmV0d29ya1Byb2Nlc3Mt
PmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShtX3BhcmFtZXRlcnMuc2Vzc2lvbklELCBtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIG1f
cGFyYW1ldGVycy50b3BPcmlnaW4gPyAmbV9wYXJhbWV0ZXJzLnRvcE9yaWdpbi0+ZGF0YSgpIDog
bnVsbHB0ciwgY2hhbGxlbmdlLCBuZWdvdGlhdGVkTGVnYWN5VExTLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNw
b25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtD
T1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiByZXNwb25zZSwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0
aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZSIpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgJ
KHJldmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0NPUlNQcmVmbGlnaHRDaGVja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJl
ZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hh
bGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdh
Y3lUTFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21w
bGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVy
cm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFs
Qnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwpJbmRl
eDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNw
cAkocmV2aXNpb24gMjU1NTgwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrRGF0YVRhc2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgTmV0
d29ya0RhdGFUYXNrOjpzY2hlZHVsZUZhaWx1cmUoRmEKICAgICBtX2ZhaWx1cmVUaW1lci5zdGFy
dE9uZVNob3QoMF9zKTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVSZXNw
b25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZl
UmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVkTGVnYWN5VExT
IG5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBpZiAocmVzcG9uc2UuaXNIVFRQMDkoKSkgewogICAgICAgICBh
dXRvIHVybCA9IHJlc3BvbnNlLnVybCgpOwpAQCAtMTExLDE3ICsxMTEsMTEgQEAgdm9pZCBOZXR3
b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZQogICAgICAgICB9CiAgICAgfQogICAgIGlm
IChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3Zl
KHJlc3BvbnNlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBtX2NsaWVu
dC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBuZWdvdGlhdGVkTGVnYWN5
VExTLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgZWxzZQogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Rh
dGFUYXNrOjpuZWdvdGlhdGVkTGVnYWN5VExTKCkgY29uc3QKLXsKLSAgICBpZiAobV9jbGllbnQp
Ci0gICAgICAgIG1fY2xpZW50LT5uZWdvdGlhdGVkTGVnYWN5VExTKCk7Ci19Ci0KIGJvb2wgTmV0
d29ya0RhdGFUYXNrOjpzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSBjb25z
dAogewogICAgIHJldHVybiBtX2NsaWVudCA/IG1fY2xpZW50LT5zaG91bGRDYXB0dXJlRXh0cmFO
ZXR3b3JrTG9hZE1ldHJpY3MoKSA6IGZhbHNlOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCShyZXZpc2lvbiAyNTU1ODApCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCSh3b3JraW5nIGNvcHkp
CkBAIC02Miw3ICs2Miw3IEBAIGNsYXNzIE5ldHdvcmtEYXRhVGFza0NsaWVudCB7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29t
cGxldGlvbkhhbmRsZXImJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2hhbGxl
bmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lU
TFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VD
b21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJl
c3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBj
b25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVz
RXhwZWN0ZWRUb1NlbmQpID0gMDsKQEAgLTcwLDcgKzcwLDYgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBjYW5ub3RTaG93VVJMKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3YXNCbG9ja2Vk
QnlSZXN0cmljdGlvbnMoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbmVnb3RpYXRlZExlZ2Fj
eVRMUygpIGNvbnN0IHsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3
b3JrTG9hZE1ldHJpY3MoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdm9pZCBkaWRD
b21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKQEAg
LTkyLDggKzkxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXN1bWUoKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVBbmRDYW5jZWwoKSA9IDA7CiAKLSAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXImJik7Ci0gICAgdm9pZCBuZWdvdGlhdGVkTGVnYWN5VExTKCkgY29uc3Q7
CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpOwogICAg
IGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkgY29uc3Q7CiAKICAg
ICBlbnVtIGNsYXNzIFN0YXRlIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAkocmV2aXNpb24gMjU1NTgwKQorKysg
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjkwLDcgKzI5MCw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6
ZGlzcGF0Y2hEaWRSZWMKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgZGlkUmVjZWl2ZVJl
c3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUo
cHJvdGVjdGVkVGhpcyksIGVycm9yQ29kZV0oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgewor
ICAgIGRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgTmVnb3RpYXRlZExlZ2Fj
eVRMUzo6Tm8sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwg
ZXJyb3JDb2RlXShQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKSB7CiAgICAgICAgIExPRyhOZXR3
b3JrU2Vzc2lvbiwgIiVwIC0gTmV0d29ya0RhdGFUYXNrQmxvYjo6ZGlkUmVjZWl2ZVJlc3BvbnNl
IGNvbXBsZXRpb25IYW5kbGVyICgldSkiLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocG9s
aWN5QWN0aW9uKSk7CiAKICAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNhbmNlbGluZyB8
fCBtX3N0YXRlID09IFN0YXRlOjpDb21wbGV0ZWQpIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCShyZXZpc2lvbiAyNTU1ODApCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjA2LDEyICsyMDYsNyBAQCB2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdl
KEF1CiAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShtX3Rhc2stPnNlc3Npb25JRCgpLCBtX3Bh
cmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIG1fcGFyYW1ldGVycy50b3BPcmlnaW4gPyAmbV9wYXJh
bWV0ZXJzLnRvcE9yaWdpbi0+ZGF0YSgpIDogbnVsbHB0ciwgY2hhbGxlbmdlLCBuZWdvdGlhdGVk
TGVnYWN5VExTLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29y
a0xvYWQ6Om5lZ290aWF0ZWRMZWdhY3lUTFMoKSBjb25zdAotewotICAgIG1fbmV0d29ya1Byb2Nl
c3MtPmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLm5lZ290aWF0ZWRMZWdhY3lUTFMobV9wYXJhbWV0
ZXJzLndlYlBhZ2VQcm94eUlEKTsKLX0KLQotdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFu
ZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgTmVnb3RpYXRlZExlZ2FjeVRMUyBu
ZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBBU1NFUlQo
IW1fdGhyb3R0bGUpOwpAQCAtMjI2LDE2ICsyMjEsMTkgQEAgdm9pZCBOZXR3b3JrTG9hZDo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKFJlcwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbm90aWZ5
RGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CisgICAgaWYgKG5lZ290aWF0ZWRMZWdhY3lUTFMgPT0gTmVnb3RpYXRlZExlZ2Fj
eVRMUzo6WWVzKQorICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5hdXRoZW50aWNhdGlvbk1hbmFn
ZXIoKS5uZWdvdGlhdGVkTGVnYWN5VExTKG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCk7Cisg
ICAgCisgICAgbm90aWZ5RGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBuZWdv
dGlhdGVkTGVnYWN5VExTLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQg
TmV0d29ya0xvYWQ6Om5vdGlmeURpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYg
cmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgTmV0d29ya0xvYWQ6Om5vdGlmeURpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0ZWRMZWdhY3lUTFMgbmVnb3RpYXRlZExlZ2FjeVRMUywg
UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICByZXNwb25zZS5zZXRTb3VyY2UoUmVzb3Vy
Y2VSZXNwb25zZTo6U291cmNlOjpOZXR3b3JrKTsKICAgICBpZiAobV9wYXJhbWV0ZXJzLm5lZWRz
Q2VydGlmaWNhdGVJbmZvKQotICAgICAgICByZXNwb25zZS5pbmNsdWRlQ2VydGlmaWNhdGVJbmZv
KCk7CisgICAgICAgIHJlc3BvbnNlLmluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8obmVnb3RpYXRlZExl
Z2FjeVRMUyA9PSBOZWdvdGlhdGVkTGVnYWN5VExTOjpZZXMgPyBVc2VkTGVnYWN5VExTOjpZZXMg
OiBVc2VkTGVnYWN5VExTOjpObyk7CiAKICAgICBtX2NsaWVudC5nZXQoKS5kaWRSZWNlaXZlUmVz
cG9uc2UoV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0K
QEAgLTI2NSw3ICsyNjMsNyBAQCB2b2lkIE5ldHdvcmtMb2FkOjp0aHJvdHRsZURlbGF5Q29tcGxl
dGVkCiAKICAgICBhdXRvIHRocm90dGxlID0gV1RGTW92ZShtX3Rocm90dGxlKTsKIAotICAgIG5v
dGlmeURpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHRocm90dGxlLT5yZXNwb25zZSksIFdURk1v
dmUodGhyb3R0bGUtPnJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBub3RpZnlEaWRS
ZWNlaXZlUmVzcG9uc2UoV1RGTW92ZSh0aHJvdHRsZS0+cmVzcG9uc2UpLCBOZWdvdGlhdGVkTGVn
YWN5VExTOjpObywgV1RGTW92ZSh0aHJvdHRsZS0+cmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcikp
OwogfQogCiB2b2lkIE5ldHdvcmtMb2FkOjpkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVz
U2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKQpJbmRleDogU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAkocmV2aXNpb24gMjU1NTgwKQorKysg
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCSh3b3JraW5nIGNvcHkp
CkBAIC03NCwxNiArNzQsMTUgQEAgcHJpdmF0ZToKICAgICAvLyBOZXR3b3JrRGF0YVRhc2tDbGll
bnQKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlv
bkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5n
ZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYm
KSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIm
JikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBm
aW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50
NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwogICAgIHZvaWQgd2FzQmxvY2tl
ZCgpIGZpbmFsOwogICAgIHZvaWQgY2Fubm90U2hvd1VSTCgpIGZpbmFsOwogICAgIHZvaWQgd2Fz
QmxvY2tlZEJ5UmVzdHJpY3Rpb25zKCkgZmluYWw7Ci0gICAgdm9pZCBuZWdvdGlhdGVkTGVnYWN5
VExTKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIG5vdGlmeURpZFJlY2VpdmVSZXNwb25zZShX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJik7
CisgICAgdm9pZCBub3RpZnlEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYp
OwogICAgIHZvaWQgdGhyb3R0bGVEZWxheUNvbXBsZXRlZCgpOwogCiAgICAgc3RkOjpyZWZlcmVu
Y2Vfd3JhcHBlcjxOZXR3b3JrTG9hZENsaWVudD4gbV9jbGllbnQ7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHJl
dmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDggQEAgY2xhc3MgTmV0
d29ya0xvYWRDaGVja2VyOwogY2xhc3MgU2VydmljZVdvcmtlckZldGNoVGFzazsKIGNsYXNzIFdl
YlNXU2VydmVyQ29ubmVjdGlvbjsKIAorZW51bSBjbGFzcyBOZWdvdGlhdGVkTGVnYWN5VExTIDog
Ym9vbDsKKwogc3RydWN0IFJlc291cmNlTG9hZEluZm87CiAKIG5hbWVzcGFjZSBOZXR3b3JrQ2Fj
aGUgewpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAJKHJl
dmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjAsNyArMTYwLDcgQEAgdm9pZCBQaW5nTG9hZDo6ZGlk
UmVjZWl2ZUNoYWxsZW5nZShBdXRoZQogICAgIGRpZEZpbmlzaChSZXNvdXJjZUVycm9yIHsgU3Ry
aW5nKCksIDAsIGN1cnJlbnRVUkwoKSwgIkZhaWxlZCBIVFRQIGF1dGhlbnRpY2F0aW9uIl9zLCBS
ZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9sIH0pOwogfQogCi12b2lkIFBpbmdMb2Fk
OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNwb25z
ZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFBpbmdMb2FkOjpk
aWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVk
TGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlIC0gaHR0
cFN0YXR1c0NvZGU6ICVkIiwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7CiAgICAgYXV0byB3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUGluZ0xvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1BpbmdMb2FkLmgJKHJldmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENv
bXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShX
ZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBD
aGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhh
bmRsZXImJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25I
YW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRy
aWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2Vu
dCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLmgJKHJldmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAkod29ya2luZyBjb3B5KQpAQCAtNTQs
NyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5
dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVn
b3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJik7CiAgICAgdm9p
ZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29u
c3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5k
bGVyJiYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYm
KTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYp
OwogCiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRp
b25IYW5kbGVyJiYpOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCShyZXZpc2lvbiAyNTU1ODAp
CisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0Nv
Y29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNzMsMTAgKzM3MywxMCBAQCB2b2lkIE5ldHdvcmtE
YXRhVGFza0NvY29hOjpkaWRSZWNlaXZlRGF0CiAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZl
RGF0YShXVEZNb3ZlKGRhdGEpKTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgV2Vi
S2l0OjpSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVkTGVnYWN5VExTIG5lZ290aWF0ZWRMZWdh
Y3lUTFMsIFdlYktpdDo6UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIEVNSVRfU0lHTlBPU1QobV90YXNrLCAicmVjZWl2ZWQgcmVzcG9uc2UgaGVh
ZGVycyIpOwotICAgIE5ldHdvcmtEYXRhVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUo
cmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgTmV0d29ya0RhdGFU
YXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSksIG5lZ290aWF0ZWRMZWdh
Y3lUTFMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrRGF0
YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2Nv
YS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtTZXNzaW9uQ29jb2EubW0JKHJldmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQkod29ya2luZyBjb3B5
KQpAQCAtODE4LDI0ICs4MTgsMjIgQEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24g
KilzZXNzaQogICAgIGlmIChhdXRvKiBuZXR3b3JrRGF0YVRhc2sgPSBbc2VsZiBleGlzdGluZ1Rh
c2s6ZGF0YVRhc2tdKSB7CiAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAg
ICAgICAgYm9vbCBuZWdvdGlhdGVkTGVnYWN5VExTID0gZmFsc2U7CisgICAgICAgIE5lZ290aWF0
ZWRMZWdhY3lUTFMgbmVnb3RpYXRlZExlZ2FjeVRMUyA9IE5lZ290aWF0ZWRMZWdhY3lUTFM6Ok5v
OwogI2lmIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkKICAgICAgICAgTlNVUkxTZXNzaW9u
VGFza1RyYW5zYWN0aW9uTWV0cmljcyAqbWV0cmljcyA9IGRhdGFUYXNrLl9pbmNvbXBsZXRlVGFz
a01ldHJpY3MudHJhbnNhY3Rpb25NZXRyaWNzLmxhc3RPYmplY3Q7CiAgICAgICAgIGF1dG8gdGxz
VmVyc2lvbiA9ICh0bHNfcHJvdG9jb2xfdmVyc2lvbl90KW1ldHJpY3MubmVnb3RpYXRlZFRMU1By
b3RvY29sVmVyc2lvbi51bnNpZ25lZFNob3J0VmFsdWU7CiAgICAgICAgIGlmICh0bHNWZXJzaW9u
ID09IHRsc19wcm90b2NvbF92ZXJzaW9uX1RMU3YxMCB8fCB0bHNWZXJzaW9uID09IHRsc19wcm90
b2NvbF92ZXJzaW9uX1RMU3YxMSkKLSAgICAgICAgICAgIG5lZ290aWF0ZWRMZWdhY3lUTFMgPSB0
cnVlOworICAgICAgICAgICAgbmVnb3RpYXRlZExlZ2FjeVRMUyA9IE5lZ290aWF0ZWRMZWdhY3lU
TFM6OlllczsKICAgICAgICAgVU5VU0VEX1BBUkFNKG1ldHJpY3MpOwogI2Vsc2UgLy8gV2UgZG8g
bm90IG5lZWQgdG8gY2hlY2sgX1RMU05lZ290aWF0ZWRQcm90b2NvbFZlcnNpb24gaWYgd2UgaGF2
ZSBtZXRyaWNzLm5lZ290aWF0ZWRUTFNQcm90b2NvbFZlcnNpb24gYmVjYXVzZSBpdCB3b3JrcyBh
dCByZXNwb25zZSB0aW1lIGV2ZW4gYmVmb3JlIHJkYXI6Ly9wcm9ibGVtLzU2NTIyNjAxCiAgICAg
ICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgIGlmIChbZGF0
YVRhc2sgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfVExTTmVnb3RpYXRlZFByb3RvY29s
VmVyc2lvbildKSB7CiAgICAgICAgICAgICBTU0xQcm90b2NvbCB0bHNWZXJzaW9uID0gW2RhdGFU
YXNrIF9UTFNOZWdvdGlhdGVkUHJvdG9jb2xWZXJzaW9uXTsKICAgICAgICAgICAgIGlmICh0bHNW
ZXJzaW9uID09IGtUTFNQcm90b2NvbDExIHx8IHRsc1ZlcnNpb24gPT0ga1RMU1Byb3RvY29sMSkK
LSAgICAgICAgICAgICAgICBuZWdvdGlhdGVkTGVnYWN5VExTID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICBuZWdvdGlhdGVkTGVnYWN5VExTID0gTmVnb3RpYXRlZExlZ2FjeVRMUzo6WWVzOwogICAg
ICAgICB9CiAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogI2VuZGlm
Ci0gICAgICAgIGlmIChuZWdvdGlhdGVkTGVnYWN5VExTKQotICAgICAgICAgICAgbmV0d29ya0Rh
dGFUYXNrLT5uZWdvdGlhdGVkTGVnYWN5VExTKCk7CiAgICAgICAgIAogICAgICAgICAvLyBBdm9p
ZCBNSU1FIHR5cGUgc25pZmZpbmcgaWYgdGhlIHJlc3BvbnNlIGNvbWVzIGJhY2sgYXMgMzA0IE5v
dCBNb2RpZmllZC4KICAgICAgICAgaW50IHN0YXR1c0NvZGUgPSBbcmVzcG9uc2UgaXNLaW5kT2ZD
bGFzczpOU0hUVFBVUkxSZXNwb25zZS5jbGFzc10gPyBbKE5TSFRUUFVSTFJlc3BvbnNlICopcmVz
cG9uc2Ugc3RhdHVzQ29kZV0gOiAwOwpAQCAtODU0LDcgKzg1Miw3IEBAIC0gKHZvaWQpVVJMU2Vz
c2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2kKICAgICAgICAgY29weVRpbWluZ0RhdGEoW2RhdGFU
YXNrIF90aW1pbmdEYXRhXSwgcmVzb3VyY2VSZXNwb25zZS5kZXByZWNhdGVkTmV0d29ya0xvYWRN
ZXRyaWNzKCkpOwogCiAgICAgICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXJDb3B5ID0gQmxvY2tf
Y29weShjb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgICAgIG5ldHdvcmtEYXRhVGFzay0+ZGlkUmVj
ZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzb3VyY2VSZXNwb25zZSksIFtjb21wbGV0aW9uSGFuZGxl
ckNvcHksIHRhc2tJZGVudGlmaWVyXShXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9u
KSB7CisgICAgICAgIG5ldHdvcmtEYXRhVGFzay0+ZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUo
cmVzb3VyY2VSZXNwb25zZSksIG5lZ290aWF0ZWRMZWdhY3lUTFMsIFtjb21wbGV0aW9uSGFuZGxl
ckNvcHksIHRhc2tJZGVudGlmaWVyXShXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9u
KSB7CiAjaWYgIUxPR19ESVNBQkxFRAogICAgICAgICAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAi
JWxsdSBkaWRSZWNlaXZlUmVzcG9uc2UgY29tcGxldGlvbkhhbmRsZXIgKCVkKSIsIHRhc2tJZGVu
dGlmaWVyLCBwb2xpY3lBY3Rpb24pOwogI2Vsc2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAJKHJl
dmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3
b3JrRGF0YVRhc2tDdXJsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI0LDcgKzIyNCw3IEBAIGJv
b2wgTmV0d29ya0RhdGFUYXNrQ3VybDo6c2hvdWxkUmVkaXJlY3QKIAogdm9pZCBOZXR3b3JrRGF0
YVRhc2tDdXJsOjppbnZva2VEaWRSZWNlaXZlUmVzcG9uc2UoKQogewotICAgIGRpZFJlY2VpdmVS
ZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlKG1fcmVzcG9uc2UpLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpXShQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKSB7CisgICAgZGlk
UmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UobV9yZXNwb25zZSksIE5lZ290aWF0ZWRM
ZWdhY3lUTFM6Ok5vLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShQb2xp
Y3lBY3Rpb24gcG9saWN5QWN0aW9uKSB7CiAgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpD
YW5jZWxpbmcgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6Q29tcGxldGVkKQogICAgICAgICAgICAgcmV0
dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0Rh
dGFUYXNrU291cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCShyZXZpc2lvbiAyNTU1ODApCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM3OCw3ICszNzgsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6
OmRpc3BhdGNoRGlkUmVjCiAgICAgZGVwcmVjYXRlZFJlc3BvbnNlTWV0cmljcy5yZXF1ZXN0U3Rh
cnQgPSBtX25ldHdvcmtMb2FkTWV0cmljcy5yZXF1ZXN0U3RhcnQ7CiAgICAgZGVwcmVjYXRlZFJl
c3BvbnNlTWV0cmljcy5yZXNwb25zZVN0YXJ0ID0gbV9uZXR3b3JrTG9hZE1ldHJpY3MucmVzcG9u
c2VTdGFydDsKIAotICAgIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlKG1fcmVz
cG9uc2UpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShQb2xpY3lBY3Rp
b24gcG9saWN5QWN0aW9uKSB7CisgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9u
c2UobV9yZXNwb25zZSksIE5lZ290aWF0ZWRMZWdhY3lUTFM6Ok5vLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpXShQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKSB7CiAgICAg
ICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDYW5jZWxpbmcgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6
Q29tcGxldGVkKSB7CiAgICAgICAgICAgICBjbGVhclJlcXVlc3QoKTsKICAgICAgICAgICAgIHJl
dHVybjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuY3BwCShy
ZXZpc2lvbiAyNTU1ODApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE3LDcgKzMxNyw3IEBAIHZvaWQgUGFnZUxvYWRTdGF0
ZTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG8KICAgICBtX3VuY29tbWl0dGVkU3RhdGUudW5yZWFjaGFi
bGVVUkwgPSBtX2xhc3RVbnJlYWNoYWJsZVVSTDsKIH0KIAotdm9pZCBQYWdlTG9hZFN0YXRlOjpk
aWRDb21taXRMb2FkKGNvbnN0IFRyYW5zYWN0aW9uOjpUb2tlbiYgdG9rZW4sIFdlYkNlcnRpZmlj
YXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBib29sIGhhc0luc2VjdXJlQ29udGVudCkKK3ZvaWQg
UGFnZUxvYWRTdGF0ZTo6ZGlkQ29tbWl0TG9hZChjb25zdCBUcmFuc2FjdGlvbjo6VG9rZW4mIHRv
a2VuLCBXZWJDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCBoYXNJbnNlY3Vy
ZUNvbnRlbnQsIGJvb2wgdXNlZExlZ2FjeVRMUykKIHsKICAgICBBU1NFUlRfVU5VU0VEKHRva2Vu
LCAmdG9rZW4ubV9wYWdlTG9hZFN0YXRlID09IHRoaXMpOwogICAgIEFTU0VSVChtX3VuY29tbWl0
dGVkU3RhdGUuc3RhdGUgPT0gU3RhdGU6OlByb3Zpc2lvbmFsKTsKQEAgLTMyOCw3ICszMjgsNyBA
QCB2b2lkIFBhZ2VMb2FkU3RhdGU6OmRpZENvbW1pdExvYWQoY29uc3QgCiAKICAgICBtX3VuY29t
bWl0dGVkU3RhdGUudXJsID0gbV91bmNvbW1pdHRlZFN0YXRlLnByb3Zpc2lvbmFsVVJMOwogICAg
IG1fdW5jb21taXR0ZWRTdGF0ZS5wcm92aXNpb25hbFVSTCA9IFN0cmluZygpOwotICAgIG1fdW5j
b21taXR0ZWRTdGF0ZS5uZWdvdGlhdGVkTGVnYWN5VExTID0gZmFsc2U7CisgICAgbV91bmNvbW1p
dHRlZFN0YXRlLm5lZ290aWF0ZWRMZWdhY3lUTFMgPSB1c2VkTGVnYWN5VExTOwogCiAgICAgbV91
bmNvbW1pdHRlZFN0YXRlLnRpdGxlID0gU3RyaW5nKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5oCShyZXZpc2lvbiAyNTU1ODApCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw3ICsx
NjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92
aXNpb25hbExvYWQoY29uc3QgVHJhbnNhY3Rpb246OlRva2VuJiwgY29uc3QgU3RyaW5nJiB1cmwp
OwogICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBUcmFuc2FjdGlvbjo6VG9r
ZW4mKTsKIAotICAgIHZvaWQgZGlkQ29tbWl0TG9hZChjb25zdCBUcmFuc2FjdGlvbjo6VG9rZW4m
LCBXZWJDZXJ0aWZpY2F0ZUluZm8mLCBib29sIGhhc0luc2VjdXJlQ29udGVudCk7CisgICAgdm9p
ZCBkaWRDb21taXRMb2FkKGNvbnN0IFRyYW5zYWN0aW9uOjpUb2tlbiYsIFdlYkNlcnRpZmljYXRl
SW5mbyYsIGJvb2wgaGFzSW5zZWN1cmVDb250ZW50LCBib29sIHVzZWRMZWdhY3lUTFMpOwogICAg
IHZvaWQgZGlkRmluaXNoTG9hZChjb25zdCBUcmFuc2FjdGlvbjo6VG9rZW4mKTsKICAgICB2b2lk
IGRpZEZhaWxMb2FkKGNvbnN0IFRyYW5zYWN0aW9uOjpUb2tlbiYpOwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCShyZXZpc2lv
biAyNTU1ODApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIFByb3Zpc2lvbmFs
UGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzCiAgICAgbV9wYWdlLmRpZEZhaWxQcm92aXNpb25hbExv
YWRGb3JGcmFtZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBmcmFtZUlELCBXVEZNb3ZlKGZy
YW1lU2VjdXJpdHlPcmlnaW4pLCBuYXZpZ2F0aW9uSUQsIHByb3Zpc2lvbmFsVVJMLCBlcnJvciwg
d2lsbENvbnRpbnVlTG9hZGluZywgdXNlckRhdGEpOyAvLyBNYXkgZGVsZXRlIHx0aGlzfC4KIH0K
IAotdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZy
YW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJ
bmZvLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0lu
c2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYg
dXNlckRhdGEpCit2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJh
bWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWlu
dDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0
aWZpY2F0ZUluZm8sIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250YWluc1BsdWdpbkRvY3Vt
ZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2Vj
dXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIGlmICghdmFsaWRh
dGVJbnB1dChmcmFtZUlELCBuYXZpZ2F0aW9uSUQpKQogICAgICAgICByZXR1cm47CkBAIC0yNzQs
NyArMjc0LDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZAogICAg
IG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlSUQpOwogCiAgICAgbV93YXNDb21taXR0
ZWQgPSB0cnVlOwotICAgIG1fcGFnZS5jb21taXRQcm92aXNpb25hbFBhZ2UoZnJhbWVJRCwgbmF2
aWdhdGlvbklELCBtaW1lVHlwZSwgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIGZyYW1l
TG9hZFR5cGUsIGNlcnRpZmljYXRlSW5mbywgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgZm9yY2Vk
SGFzSW5zZWN1cmVDb250ZW50LCB1c2VyRGF0YSk7IC8vIFdpbGwgZGVsZXRlIHx0aGlzfC4KKyAg
ICBtX3BhZ2UuY29tbWl0UHJvdmlzaW9uYWxQYWdlKGZyYW1lSUQsIG5hdmlnYXRpb25JRCwgbWlt
ZVR5cGUsIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBmcmFtZUxvYWRUeXBlLCBjZXJ0
aWZpY2F0ZUluZm8sIHVzZWRMZWdhY3lUTFMsIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIGZvcmNl
ZEhhc0luc2VjdXJlQ29udGVudCwgdXNlckRhdGEpOyAvLyBXaWxsIGRlbGV0ZSB8dGhpc3wuCiB9
CiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25E
YXRhKGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmIHN0b3JlLCBGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQ
YWdlUHJveHkuaAkocmV2aXNpb24gMjU1NTgwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UHJvdmlzaW9uYWxQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDcgKzEyMiw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcsIFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRDcmVhdGVNYWluRnJhbWUoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IFVSTCYmLCBVUkwmJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmKTsKLSAgICB2b2lk
IGRpZENvbW1pdExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3Rv
bUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6
Q2VydGlmaWNhdGVJbmZvJiwgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxX
ZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgY29u
c3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRpZENvbW1pdExvYWRGb3JGcmFtZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVM
b2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiwgYm9vbCB1c2VkTGVnYWN5
VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0lu
c2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYp
OwogICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9y
aWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJM
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgV2ViQ29yZTo6V2lsbENvbnRpbnVlTG9h
ZGluZywgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIHN0YXJ0VVJMU2NoZW1lVGFzayhVUkxT
Y2hlbWVUYXNrUGFyYW1ldGVycyYmKTsKICAgICB2b2lkIGJhY2tGb3J3YXJkR29Ub0l0ZW0oY29u
c3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIGNvbnN0IFdlYkJhY2tGb3J3YXJkTGlz
dENvdW50cyYpPiYmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAkocmV2aXNpb24gMjU1NTgwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE1Nyw3ICszMTU3LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpbwogICAgIHNlbmRlci0+c2VuZChhY3Rpb24s
IG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSA6IDAsIGRvd25sb2FkSUQs
IFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpjb21t
aXRQcm92aXNpb25hbFBhZ2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRl
bnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlm
aWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwg
T3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNv
bnRlbnQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpjb21t
aXRQcm92aXNpb25hbFBhZ2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRl
bnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlm
aWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250
YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+
IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewog
ICAgIEFTU0VSVChtX3Byb3Zpc2lvbmFsUGFnZSk7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAiY29tbWl0UHJvdmlzaW9uYWxQYWdlOiBuZXdQSUQgPSAlaSIsIG1fcHJvdmlz
aW9uYWxQYWdlLT5wcm9jZXNzKCkucHJvY2Vzc0lkZW50aWZpZXIoKSk7CkBAIC0zMTkxLDcgKzMx
OTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlCiAgICAgY29u
c3QgYXV0byBvbGRXZWJQYWdlSUQgPSBtX3dlYlBhZ2VJRDsKICAgICBzd2FwVG9Qcm92aXNpb25h
bFBhZ2Uoc3RkOjpleGNoYW5nZShtX3Byb3Zpc2lvbmFsUGFnZSwgbnVsbHB0cikpOwogCi0gICAg
ZGlkQ29tbWl0TG9hZEZvckZyYW1lKGZyYW1lSUQsIG5hdmlnYXRpb25JRCwgbWltZVR5cGUsIGZy
YW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBmcmFtZUxvYWRUeXBlLCBjZXJ0aWZpY2F0ZUlu
Zm8sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgdXNl
ckRhdGEpOworICAgIGRpZENvbW1pdExvYWRGb3JGcmFtZShmcmFtZUlELCBuYXZpZ2F0aW9uSUQs
IG1pbWVUeXBlLCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgZnJhbWVMb2FkVHlwZSwg
Y2VydGlmaWNhdGVJbmZvLCB1c2VkTGVnYWN5VExTLCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBm
b3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIHVzZXJEYXRhKTsKIAogICAgIG1faW5zcGVjdG9yQ29u
dHJvbGxlci0+ZGlkQ29tbWl0UHJvdmlzaW9uYWxQYWdlKG9sZFdlYlBhZ2VJRCwgbV93ZWJQYWdl
SUQpOwogfQpAQCAtNDQ3Nyw3ICs0NDc3LDcgQEAgc3RhdGljIE9wdGlvblNldDxDcm9zc1NpdGVO
YXZpZ2F0aW9uRGF0YQogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRM
b2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92
aWRlciwgdWludDMyX3Qgb3BhcXVlRnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlm
aWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwg
T3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50PiBoYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVz
ZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJh
bWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWlu
dDMyX3Qgb3BhcXVlRnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZv
JiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250YWluc1BsdWdp
bkRvY3VtZW50LCBPcHRpb25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+IGhhc0luc2VjdXJlQ29udGVu
dCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIExPRyhMb2FkaW5nLCAiKExvYWRp
bmcpIFdlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBkaWRDb21taXRMb2FkRm9yRnJhbWUgaW4gbmF2
aWdhdGlvbiAlIiBQUkl1NjQsIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uSUQp
OwogICAgIExPRyhCYWNrRm9yd2FyZCwgIihCYWNrL0ZvcndhcmQpIEFmdGVyIGxvYWQgY29tbWl0
LCBiYWNrL2ZvcndhcmQgbGlzdCBpcyBub3c6JXMiLCBtX2JhY2tGb3J3YXJkTGlzdC0+bG9nZ2lu
Z1N0cmluZygpKTsKQEAgLTQ1MTksNyArNDUxOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRD
b21taXRMb2FkRm9yRnJhbWUKICAgICBib29sIG1hcmtQYWdlSW5zZWN1cmUgPSBoYXNJbnNlY3Vy
ZUNvbnRlbnQgPyBoYXNJbnNlY3VyZUNvbnRlbnQudmFsdWUoKSA9PSBIYXNJbnNlY3VyZUNvbnRl
bnQ6OlllcyA6IG1fdHJlYXRzU0hBMUNlcnRpZmljYXRlc0FzSW5zZWN1cmUgJiYgY2VydGlmaWNh
dGVJbmZvLmNvbnRhaW5zTm9uUm9vdFNIQTFTaWduZWRDZXJ0aWZpY2F0ZSgpOwogCiAgICAgaWYg
KGZyYW1lLT5pc01haW5GcmFtZSgpKSB7Ci0gICAgICAgIG1fcGFnZUxvYWRTdGF0ZS5kaWRDb21t
aXRMb2FkKHRyYW5zYWN0aW9uLCB3ZWJDZXJ0aWZpY2F0ZUluZm8sIG1hcmtQYWdlSW5zZWN1cmUp
OworICAgICAgICBtX3BhZ2VMb2FkU3RhdGUuZGlkQ29tbWl0TG9hZCh0cmFuc2FjdGlvbiwgd2Vi
Q2VydGlmaWNhdGVJbmZvLCBtYXJrUGFnZUluc2VjdXJlLCB1c2VkTGVnYWN5VExTKTsKICAgICAg
ICAgbV9zaG91bGRTdXBwcmVzc05leHRBdXRvbWF0aWNOYXZpZ2F0aW9uU25hcHNob3QgPSBmYWxz
ZTsKICAgICB9IGVsc2UgaWYgKG1hcmtQYWdlSW5zZWN1cmUpCiAgICAgICAgIG1fcGFnZUxvYWRT
dGF0ZS5kaWREaXNwbGF5T3JSdW5JbnNlY3VyZUNvbnRlbnQodHJhbnNhY3Rpb24pOwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI1NTU4MCkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTg2LDcgKzE1ODYsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIFByb3Zpc2lvbmFsUGFn
ZVByb3h5KiBwcm92aXNpb25hbFBhZ2VQcm94eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdmlzaW9u
YWxQYWdlLmdldCgpOyB9Ci0gICAgdm9pZCBjb21taXRQcm92aXNpb25hbFBhZ2UoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1l
TG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYsIGJvb2wgY29udGFpbnNQ
bHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3Jj
ZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBjb21taXRQ
cm92aXNpb25hbFBhZ2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50
UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmlj
YXRlSW5mbyYsIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50
LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJl
Q29udGVudCwgY29uc3QgVXNlckRhdGEmKTsKIAogICAgIC8vIExvZ2ljIHNoYXJlZCBiZXR3ZWVu
IHRoZSBXZWJQYWdlUHJveHkgYW5kIHRoZSBQcm92aXNpb25hbFBhZ2VQcm94eS4KICAgICB2b2lk
IGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94
eT4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVS
TCYmLCBVUkwmJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmKTsKQEAgLTE3MzYsNyAr
MTczNiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZy
YW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRDaGFuZ2VQcm92aXNp
b25hbFVSTEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBVUkwmJik7CiAgICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBm
cmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYg
cHJvdmlzaW9uYWxVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBXZWJDb3JlOjpX
aWxsQ29udGludWVMb2FkaW5nLCBjb25zdCBVc2VyRGF0YSYpOwotICAgIHZvaWQgZGlkQ29tbWl0
TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFBy
b3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0
ZUluZm8mLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhh
c0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0
YSYpOworICAgIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29s
IGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBj
b25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mLCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wg
Y29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250
ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9p
ZCBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZEZp
bmlzaExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZEZhaWxMb2FkRm9yRnJhbWUo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBVc2VyRGF0YSYpOwpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24g
MjU1NTgwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNyArMTI2LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZVByb3h5IHsKICAgICBEaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciBmcmFtZUlEKQogICAgIERpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJh
bWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgVVJMIHVybCkKICAgICBEaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBTdHJpbmcgcHJv
dmlzaW9uYWxVUkwsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIGVudW06Ym9vbCBXZWJD
b3JlOjpXaWxsQ29udGludWVMb2FkaW5nIHdpbGxDb250aW51ZUxvYWRpbmcsIFdlYktpdDo6VXNl
ckRhdGEgdXNlckRhdGEpCi0gICAgRGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFN0cmluZyBtaW1lVHlw
ZSwgYm9vbCBoYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGxvYWRUeXBlLCBXZWJD
b3JlOjpDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvLCBib29sIGNvbnRhaW5zUGx1Z2lu
RG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFz
SW5zZWN1cmVDb250ZW50LCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQorICAgIERpZENvbW1p
dExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBTdHJpbmcgbWltZVR5cGUsIGJvb2wgaGFzQ3VzdG9tQ29udGVudFByb3Zp
ZGVyLCB1aW50MzJfdCBsb2FkVHlwZSwgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvIGNlcnRpZmlj
YXRlSW5mbywgYm9vbCB1c2VkTGVnYWN5VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQs
IE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVD
b250ZW50LCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIERpZEZhaWxMb2FkRm9yRnJh
bWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0
YSkKICAgICBEaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJLaXQ6OlVzZXJEYXRhIHVz
ZXJEYXRhKQogICAgIERpZEZpbmlzaExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJE
YXRhKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAyNTU1
ODApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NjAsNyArNTYwLDcgQEAgdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDbwogICAgIHdlYlBhZ2UtPnNhbmRib3hF
eHRlbnNpb25UcmFja2VyKCkuZGlkQ29tbWl0UHJvdmlzaW9uYWxMb2FkKG1fZnJhbWUpOwogCiAg
ICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCi0gICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpEaWRDb21taXRMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBk
b2N1bWVudExvYWRlci5uYXZpZ2F0aW9uSUQoKSwgZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKS5t
aW1lVHlwZSgpLCBtX2ZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBzdGF0aWNfY2FzdDx1
aW50MzJfdD4obV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmxvYWRUeXBlKCkpLCB2YWx1
ZU9yQ29tcHV0ZShkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLmNlcnRpZmljYXRlSW5mbygpLCBb
XSB7IHJldHVybiBDZXJ0aWZpY2F0ZUluZm8oKTsgfSksIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5k
b2N1bWVudCgpLT5pc1BsdWdpbkRvY3VtZW50KCksIGhhc0luc2VjdXJlQ29udGVudCwgVXNlckRh
dGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2Vy
RGF0YS5nZXQoKSkuZ2V0KCkpKSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEaWRDb21taXRMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBkb2N1bWVu
dExvYWRlci5uYXZpZ2F0aW9uSUQoKSwgZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKS5taW1lVHlw
ZSgpLCBtX2ZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBzdGF0aWNfY2FzdDx1aW50MzJf
dD4obV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmxvYWRUeXBlKCkpLCB2YWx1ZU9yQ29t
cHV0ZShkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLmNlcnRpZmljYXRlSW5mbygpLCBbXSB7IHJl
dHVybiBDZXJ0aWZpY2F0ZUluZm8oKTsgfSksIGRvY3VtZW50TG9hZGVyLnJlc3BvbnNlKCkudXNl
ZExlZ2FjeVRMUygpLCBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKS0+aXNQbHVnaW5E
b2N1bWVudCgpLCBoYXNJbnNlY3VyZUNvbnRlbnQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkp
OwogICAgIHdlYlBhZ2UtPmRpZENvbW1pdExvYWQobV9mcmFtZSk7CiB9CiAKSW5kZXg6IFRvb2xz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NTY4
MikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisy
MDIwLTAyLTA0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgRml4IHJhY2UgY29uZGl0aW9uIGZvciBXS1dlYlZpZXcuX25lZ290aWF0ZWRMZWdh
Y3lUTFMgd2hlbiBsb2FkaW5nIG1haW4gcmVzb3VvcmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcyMDcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIVFRQU2VydmVyIG5vdyBzdXBwb3J0cyBIVFRQUy4g
VGVsbCB5b3VyIGZyaWVuZHMhCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0NoYWxsZW5nZS5tbToKKyAgICAgICAgKHRlc3RDZXJ0aWZpY2F0ZSk6CisgICAgICAg
ICh0ZXN0SWRlbnRpdHkpOgorICAgICAgICAoY3JlZGVudGlhbFdpdGhJZGVudGl0eSk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UTFNEZXByZWNhdGlvbi5tbToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OndlYlZpZXdXaXRoTmF2aWdhdGlvbkRlbGVnYXRlKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
Y29jb2EvSFRUUFNlcnZlci5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNl
cnZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OkhUVFBTZXJ2ZXIp
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6cmVxdWVzdCBjb25zdCk6CisK
IDIwMjAtMDItMDQgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAg
ICAgICAgIFtDTWFrZV0gQWRkIENhaXJvOjpDYWlybyB0YXJnZXQKSW5kZXg6IFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2hhbGxlbmdlLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2hhbGxlbmdlLm1tCShyZXZpc2lv
biAyNTU1ODApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NoYWxs
ZW5nZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogCiAjaW1wb3J0ICJjb25m
aWcuaCIKIAorI2ltcG9ydCAiSFRUUFNlcnZlci5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRp
ZXMuaCIKICNpbXBvcnQgIlRDUFNlcnZlci5oIgogI2ltcG9ydCAiVGVzdC5oIgpAQCAtNDMsMTEg
KzQ0LDE0IEBACiAKIHN0YXRpYyBib29sIG5hdmlnYXRpb25GaW5pc2hlZDsKIAotc3RhdGljIFJl
dGFpblB0cjxOU1VSTENyZWRlbnRpYWw+IGNyZWRlbnRpYWxXaXRoSWRlbnRpdHkoKQorc3RhdGlj
IFJldGFpblB0cjxTZWNDZXJ0aWZpY2F0ZVJlZj4gdGVzdENlcnRpZmljYXRlKCkKIHsKICAgICBh
dXRvIGNlcnRpZmljYXRlQnl0ZXMgPSBUZXN0V2ViS2l0QVBJOjpUQ1BTZXJ2ZXI6OnRlc3RDZXJ0
aWZpY2F0ZSgpOwotICAgIGF1dG8gY2VydGlmaWNhdGUgPSBhZG9wdENGKFNlY0NlcnRpZmljYXRl
Q3JlYXRlV2l0aERhdGEobnVsbHB0ciwgKF9fYnJpZGdlIENGRGF0YVJlZilbTlNEYXRhIGRhdGFX
aXRoQnl0ZXM6Y2VydGlmaWNhdGVCeXRlcy5kYXRhKCkgbGVuZ3RoOmNlcnRpZmljYXRlQnl0ZXMu
c2l6ZSgpXSkpOwotICAgIAorICAgIHJldHVybiBhZG9wdENGKFNlY0NlcnRpZmljYXRlQ3JlYXRl
V2l0aERhdGEobnVsbHB0ciwgKF9fYnJpZGdlIENGRGF0YVJlZilbTlNEYXRhIGRhdGFXaXRoQnl0
ZXM6Y2VydGlmaWNhdGVCeXRlcy5kYXRhKCkgbGVuZ3RoOmNlcnRpZmljYXRlQnl0ZXMuc2l6ZSgp
XSkpOworfQorCitSZXRhaW5QdHI8U2VjSWRlbnRpdHlSZWY+IHRlc3RJZGVudGl0eSgpCit7CiAg
ICAgYXV0byBwcml2YXRlS2V5Qnl0ZXMgPSBUZXN0V2ViS2l0QVBJOjpUQ1BTZXJ2ZXI6OnRlc3RQ
cml2YXRlS2V5KCk7CiAgICAgTlNEYXRhICpkZXJFbmNvZGVkUHJpdmF0ZUtleSA9IFtOU0RhdGEg
ZGF0YVdpdGhCeXRlczpwcml2YXRlS2V5Qnl0ZXMuZGF0YSgpIGxlbmd0aDpwcml2YXRlS2V5Qnl0
ZXMuc2l6ZSgpXTsKICAgICBOU0RpY3Rpb25hcnkqIG9wdGlvbnMgPSBAewpAQCAtNjEsMTAgKzY1
LDE1IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNVUkxDcmVkZW50aWFsPiBjcmVkZW4KICAgICBFWFBF
Q1RfTlVMTChlcnJvcik7CiAgICAgRVhQRUNUX05PVF9OVUxMKHByaXZhdGVLZXkuZ2V0KCkpOwog
Ci0gICAgYXV0byBpZGVudGl0eSA9IGFkb3B0Q0YoU2VjSWRlbnRpdHlDcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgY2VydGlmaWNhdGUuZ2V0KCksIHByaXZhdGVLZXkuZ2V0KCkpKTsKKyAgICBy
ZXR1cm4gYWRvcHRDRihTZWNJZGVudGl0eUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB0ZXN0
Q2VydGlmaWNhdGUoKS5nZXQoKSwgcHJpdmF0ZUtleS5nZXQoKSkpOworfQorCitzdGF0aWMgUmV0
YWluUHRyPE5TVVJMQ3JlZGVudGlhbD4gY3JlZGVudGlhbFdpdGhJZGVudGl0eSgpCit7CisgICAg
YXV0byBpZGVudGl0eSA9IHRlc3RJZGVudGl0eSgpOwogICAgIEVYUEVDVF9OT1RfTlVMTChpZGVu
dGl0eSk7CiAgICAgCi0gICAgcmV0dXJuIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbFdpdGhJ
ZGVudGl0eTppZGVudGl0eS5nZXQoKSBjZXJ0aWZpY2F0ZXM6QFsoaWQpY2VydGlmaWNhdGUuZ2V0
KCldIHBlcnNpc3RlbmNlOk5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZV07CisgICAgcmV0
dXJuIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbFdpdGhJZGVudGl0eTppZGVudGl0eS5nZXQo
KSBjZXJ0aWZpY2F0ZXM6QFsoaWQpdGVzdENlcnRpZmljYXRlKCkuZ2V0KCldIHBlcnNpc3RlbmNl
Ok5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZV07CiB9CiAKIEBpbnRlcmZhY2UgQ2hhbGxl
bmdlRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+CkluZGV4OiBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RMU0RlcHJlY2F0aW9uLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVExTRGVwcmVj
YXRpb24ubW0JKHJldmlzaW9uIDI1NTU4MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvVExTRGVwcmVjYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3
LDcgQEAKIAogI2lmIEhBVkUoU1NMKQogCisjaW1wb3J0ICJIVFRQU2VydmVyLmgiCiAjaW1wb3J0
ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVENQU2VydmVyLmgiCiAjaW1wb3J0ICJU
ZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCkBAIC0zNywxMyArMzgsMTQgQEAKICNpbXBvcnQgPFdl
YktpdC9XZWJLaXQuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL3RleHQv
U3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
I2ltcG9ydCA8V2ViS2l0L1dlYlVJS2l0U3VwcG9ydC5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkNv
cmVUaHJlYWQuaD4KICNlbmRpZgogCi0jaWYgSEFWRShUTFNfUFJPVE9DT0xfVkVSU0lPTl9UKQor
I2lmIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkgfHwgSEFWRShORVRXT1JLX0ZSQU1FV09S
SykKIEBpbnRlcmZhY2UgVExTT2JzZXJ2ZXIgOiBOU09iamVjdAogLSAodm9pZCl3YWl0VW50aWxO
ZWdvdGlhdGVkTGVnYWN5VExTQ2hhbmdlZDsKIEBlbmQKQEAgLTIyOCwxMyArMjMwLDkgQEAgVEVT
VChUTFNWZXJzaW9uLCBESVNBQkxFRF9OYXZpZ2F0aW9uRGVsZQogfQogCiAjaWYgSEFWRShUTFNf
UFJPVE9DT0xfVkVSU0lPTl9UKQotVEVTVChUTFNWZXJzaW9uLCBOZWdvdGlhdGVkTGVnYWN5VExT
KQotewotICAgIFRDUFNlcnZlciBzZXJ2ZXIoVENQU2VydmVyOjpQcm90b2NvbDo6SFRUUFMsIFtd
IChTU0wgKnNzbCkgewotICAgICAgICBUQ1BTZXJ2ZXI6OnJlc3BvbmRXaXRoT0soc3NsKTsKLSAg
ICAgICAgVENQU2VydmVyOjpyZXNwb25kV2l0aE9LKHNzbCk7Ci0gICAgfSwgdGxzMV8xKTsKIAor
c3RhdGljIHN0ZDo6cGFpcjxSZXRhaW5QdHI8V0tXZWJWaWV3PiwgUmV0YWluUHRyPFRlc3ROYXZp
Z2F0aW9uRGVsZWdhdGU+PiB3ZWJWaWV3V2l0aE5hdmlnYXRpb25EZWxlZ2F0ZSgpCit7CiAgICAg
YXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7CiAg
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwogICAgIFt3ZWJWaWV3
IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CkBAIC0yNDIsNiArMjQwLDIw
IEBAIFRFU1QoVExTVmVyc2lvbiwgTmVnb3RpYXRlZExlZ2FjeVRMUykKICAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2Qs
IE5TVVJMQXV0aGVudGljYXRpb25NZXRob2RTZXJ2ZXJUcnVzdCk7CiAgICAgICAgIGNhbGxiYWNr
KE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50aWFs
IGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0
XSk7CiAgICAgfV07CisgICAgcmV0dXJuIHsgd2ViVmlldywgZGVsZWdhdGUgfTsKK30KKworI2Vu
ZGlmIC8vIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkgfHwgSEFWRShORVRXT1JLX0ZSQU1F
V09SSykKKworI2lmIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkKKworVEVTVChUTFNWZXJz
aW9uLCBOZWdvdGlhdGVkTGVnYWN5VExTKQoreworICAgIEhUVFBTZXJ2ZXIgc2VydmVyKHsKKyAg
ICAgICAgeyAiLyIsIHsgImhlbGxvIiB9IH0KKyAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6
SHR0cHNXaXRoTGVnYWN5VExTKTsKKworICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHdl
YlZpZXdXaXRoTmF2aWdhdGlvbkRlbGVnYXRlKCk7CiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0
ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNT
dHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlci5w
b3J0KCldXV07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CiAKQEAgLTI2Miw3
ICsyNzQsNjQgQEAgVEVTVChUTFNWZXJzaW9uLCBOZWdvdGlhdGVkTGVnYWN5VExTKQogCiAgICAg
W3dlYlZpZXcgcmVtb3ZlT2JzZXJ2ZXI6b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAIl9uZWdv
dGlhdGVkTGVnYWN5VExTIl07CiB9Ci0jZW5kaWYKKworI2VuZGlmIC8vIEhBVkUoVExTX1BST1RP
Q09MX1ZFUlNJT05fVCkKKworI2lmIEhBVkUoTkVUV09SS19GUkFNRVdPUkspICYmIEhBVkUoVExT
X1BST1RPQ09MX1ZFUlNJT05fVCkKKworVEVTVChUTFNWZXJzaW9uLCBOYXZpZ2F0ZUJhY2spCit7
CisgICAgSFRUUFNlcnZlciBsZWdhY3lUTFNTZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyAiaGVs
bG8iIH0gfQorICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwc1dpdGhMZWdhY3lUTFMp
OworCisgICAgSFRUUFNlcnZlciBtb2Rlcm5UTFNTZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyAi
aGVsbG8iIH0gfQorICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CisgICAgCisg
ICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gd2ViVmlld1dpdGhOYXZpZ2F0aW9uRGVsZWdh
dGUoKTsKKyAgICBhdXRvIG9ic2VydmVyID0gYWRvcHROUyhbVExTT2JzZXJ2ZXIgbmV3XSk7Cisg
ICAgW3dlYlZpZXcgYWRkT2JzZXJ2ZXI6b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAIl9uZWdv
dGlhdGVkTGVnYWN5VExTIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29u
dGV4dDpuaWxdOworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6bGVnYWN5VExTU2VydmVyLnJl
cXVlc3QoKV07CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IF9uZWdvdGlhdGVkTGVnYWN5VExT
XSk7CisgICAgW2RlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKyAgICBFWFBF
Q1RfVFJVRShbd2ViVmlldyBfbmVnb3RpYXRlZExlZ2FjeVRMU10pOworCisgICAgW3dlYlZpZXcg
bG9hZFJlcXVlc3Q6bW9kZXJuVExTU2VydmVyLnJlcXVlc3QoKV07CisgICAgW2RlbGVnYXRlIHdh
aXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgX25l
Z290aWF0ZWRMZWdhY3lUTFNdKTsKKworICAgIFt3ZWJWaWV3IGdvQmFja107CisgICAgW29ic2Vy
dmVyIHdhaXRVbnRpbE5lZ290aWF0ZWRMZWdhY3lUTFNDaGFuZ2VkXTsKKyAgICBFWFBFQ1RfVFJV
RShbd2ViVmlldyBfbmVnb3RpYXRlZExlZ2FjeVRMU10pOworCisgICAgW3dlYlZpZXcgcmVtb3Zl
T2JzZXJ2ZXI6b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAIl9uZWdvdGlhdGVkTGVnYWN5VExT
Il07Cit9CisKK1RFU1QoVExTVmVyc2lvbiwgU3VicmVzb3VyY2UpCit7CisgICAgSFRUUFNlcnZl
ciBsZWdhY3lUTFNTZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyAiaGVsbG8iIH0gfQorICAgIH0s
IEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwc1dpdGhMZWdhY3lUTFMpOworCisgICAgSFRUUFNl
cnZlciBtb2Rlcm5UTFNTZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyBtYWtlU3RyaW5nKCI8c2Ny
aXB0PmZldGNoKCdodHRwczovLzEyNy4wLjAuMToiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGVn
YWN5VExTU2VydmVyLnBvcnQoKSksICIvJyx7bW9kZTonbm8tY29ycyd9KTwvc2NyaXB0PiIpIH0g
fQorICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CisgICAgCisgICAgYXV0byBb
d2ViVmlldywgZGVsZWdhdGVdID0gd2ViVmlld1dpdGhOYXZpZ2F0aW9uRGVsZWdhdGUoKTsKKyAg
ICBhdXRvIG9ic2VydmVyID0gYWRvcHROUyhbVExTT2JzZXJ2ZXIgbmV3XSk7CisgICAgW3dlYlZp
ZXcgYWRkT2JzZXJ2ZXI6b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAIl9uZWdvdGlhdGVkTGVn
YWN5VExTIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDpuaWxd
OworCisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IF9uZWdvdGlhdGVkTGVnYWN5VExTXSk7Cisg
ICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6bW9kZXJuVExTU2VydmVyLnJlcXVlc3QoKV07CisgICAg
d2hpbGUgKCFbd2ViVmlldyBfbmVnb3RpYXRlZExlZ2FjeVRMU10pCisgICAgICAgIFtvYnNlcnZl
ciB3YWl0VW50aWxOZWdvdGlhdGVkTGVnYWN5VExTQ2hhbmdlZF07CisKKyAgICBbd2ViVmlldyBy
ZW1vdmVPYnNlcnZlcjpvYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOkAiX25lZ290aWF0ZWRMZWdh
Y3lUTFMiXTsKK30KKworI2VuZGlmIC8vIEhBVkUoTkVUV09SS19GUkFNRVdPUkspICYmIEhBVkUo
VExTX1BST1RPQ09MX1ZFUlNJT05fVCkKIAogLy8gRklYTUU6IEFkZCBzb21lIHRlc3RzIGZvciBX
S1dlYlZpZXcuaGFzT25seVNlY3VyZUNvbnRlbnQKIApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQ
SS9jb2NvYS9IVFRQU2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9j
b2NvYS9IVFRQU2VydmVyLmgJKHJldmlzaW9uIDI1NTU4MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvSFRUUFNlcnZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw4IEBAIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIGNsYXNzIEhUVFBTZXJ2ZXIgewogcHVibGljOgogICAg
IHN0cnVjdCBIVFRQUmVzcG9uc2U7Ci0gICAgSFRUUFNlcnZlcihzdGQ6OmluaXRpYWxpemVyX2xp
c3Q8c3RkOjpwYWlyPFN0cmluZywgSFRUUFJlc3BvbnNlPj4pOworICAgIGVudW0gY2xhc3MgUHJv
dG9jb2wgOiB1aW50OF90IHsgSHR0cCwgSHR0cHMsIEh0dHBzV2l0aExlZ2FjeVRMUyB9OworICAg
IEhUVFBTZXJ2ZXIoc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxTdHJpbmcsIEhUVFBS
ZXNwb25zZT4+LCBQcm90b2NvbCA9IFByb3RvY29sOjpIdHRwKTsKICAgICB1aW50MTZfdCBwb3J0
KCkgY29uc3Q7CiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0KCkgY29uc3Q7CiAgICAgCkBAIC00
Niw2ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXNwb25kVG9SZXF1ZXN0cyhud19jb25u
ZWN0aW9uX3QpOwogICAgIAogICAgIFJldGFpblB0cjxud19saXN0ZW5lcl90PiBtX2xpc3RlbmVy
OworICAgIGNvbnN0IFByb3RvY29sIG1fcHJvdG9jb2w7CiAgICAgY29uc3QgSGFzaE1hcDxTdHJp
bmcsIEhUVFBSZXNwb25zZT4gbV9yZXF1ZXN0UmVzcG9uc2VNYXA7CiB9OwogCkBAIC03NCwzICs3
Niw1IEBAIHN0cnVjdCBIVFRQU2VydmVyOjpIVFRQUmVzcG9uc2UgewogfSAvLyBuYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSQogCiAjZW5kaWYgLy8gSEFWRShORVRXT1JLX0ZSQU1FV09SSykKKworUmV0
YWluUHRyPFNlY0lkZW50aXR5UmVmPiB0ZXN0SWRlbnRpdHkoKTsKSW5kZXg6IFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0JKHJldmlzaW9uIDI1NTU4MCkKKysrIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMzMsMTUg
KzMzLDI4IEBACiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotSFRUUFNlcnZlcjo6SFRU
UFNlcnZlcihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPFN0cmluZywgSFRUUFJlc3Bv
bnNlPj4gcmVzcG9uc2VzKQotICAgIDogbV9yZXF1ZXN0UmVzcG9uc2VNYXAoW10oc3RkOjppbml0
aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxTdHJpbmcsIEhUVFBTZXJ2ZXI6OkhUVFBSZXNwb25zZT4+
IGxpc3QpIHsKK0hUVFBTZXJ2ZXI6OkhUVFBTZXJ2ZXIoc3RkOjppbml0aWFsaXplcl9saXN0PHN0
ZDo6cGFpcjxTdHJpbmcsIEhUVFBSZXNwb25zZT4+IHJlc3BvbnNlcywgUHJvdG9jb2wgcHJvdG9j
b2wpCisgICAgOiBtX3Byb3RvY29sKHByb3RvY29sKQorICAgICwgbV9yZXF1ZXN0UmVzcG9uc2VN
YXAoW10oc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxTdHJpbmcsIEhUVFBTZXJ2ZXI6
OkhUVFBSZXNwb25zZT4+IGxpc3QpIHsKICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIEhUVFBTZXJ2
ZXI6OkhUVFBSZXNwb25zZT4gbWFwOwogICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBsaXN0KQog
ICAgICAgICAgICAgbWFwLmFkZChwYWlyLmZpcnN0LCBwYWlyLnNlY29uZCk7CiAgICAgICAgIHJl
dHVybiBtYXA7CiAgICAgfShyZXNwb25zZXMpKQogewotICAgIGF1dG8gcGFyYW1ldGVycyA9IGFk
b3B0TlMobndfcGFyYW1ldGVyc19jcmVhdGVfc2VjdXJlX3RjcChOV19QQVJBTUVURVJTX0RJU0FC
TEVfUFJPVE9DT0wsIE5XX1BBUkFNRVRFUlNfREVGQVVMVF9DT05GSUdVUkFUSU9OKSk7CisgICAg
YXV0byBjb25maWd1cmVUTFMgPSBwcm90b2NvbCA9PSBQcm90b2NvbDo6SHR0cCA/IE5XX1BBUkFN
RVRFUlNfRElTQUJMRV9QUk9UT0NPTCA6IF4obndfcHJvdG9jb2xfb3B0aW9uc190IHByb3RvY29s
T3B0aW9ucykgeworI2lmIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkKKyAgICAgICAgYXV0
byBvcHRpb25zID0gYWRvcHROUyhud190bHNfY29weV9zZWNfcHJvdG9jb2xfb3B0aW9ucyhwcm90
b2NvbE9wdGlvbnMpKTsKKyAgICAgICAgYXV0byBpZGVudGl0eSA9IGFkb3B0TlMoc2VjX2lkZW50
aXR5X2NyZWF0ZSh0ZXN0SWRlbnRpdHkoKS5nZXQoKSkpOworICAgICAgICBzZWNfcHJvdG9jb2xf
b3B0aW9uc19zZXRfbG9jYWxfaWRlbnRpdHkob3B0aW9ucy5nZXQoKSwgaWRlbnRpdHkuZ2V0KCkp
OworICAgICAgICBpZiAocHJvdG9jb2wgPT0gUHJvdG9jb2w6Okh0dHBzV2l0aExlZ2FjeVRMUykK
KyAgICAgICAgICAgIHNlY19wcm90b2NvbF9vcHRpb25zX3NldF9tYXhfdGxzX3Byb3RvY29sX3Zl
cnNpb24ob3B0aW9ucy5nZXQoKSwgdGxzX3Byb3RvY29sX3ZlcnNpb25fVExTdjEwKTsKKyNlbHNl
CisgICAgICAgIFVOVVNFRF9QQVJBTShwcm90b2NvbE9wdGlvbnMpOworICAgICAgICBBU1NFUlQo
cHJvdG9jb2wgIT0gUHJvdG9jb2w6Okh0dHBzV2l0aExlZ2FjeVRMUyk7CisjZW5kaWYKKyAgICB9
OworICAgIGF1dG8gcGFyYW1ldGVycyA9IGFkb3B0TlMobndfcGFyYW1ldGVyc19jcmVhdGVfc2Vj
dXJlX3RjcChjb25maWd1cmVUTFMsIE5XX1BBUkFNRVRFUlNfREVGQVVMVF9DT05GSUdVUkFUSU9O
KSk7CiAgICAgbV9saXN0ZW5lciA9IGFkb3B0TlMobndfbGlzdGVuZXJfY3JlYXRlKHBhcmFtZXRl
cnMuZ2V0KCkpKTsKICAgICBud19saXN0ZW5lcl9zZXRfcXVldWUobV9saXN0ZW5lci5nZXQoKSwg
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7CiAgICAgbndfbGlzdGVuZXJfc2V0X25ld19jb25u
ZWN0aW9uX2hhbmRsZXIobV9saXN0ZW5lci5nZXQoKSwgXihud19jb25uZWN0aW9uX3QgY29ubmVj
dGlvbikgewpAQCAtMTI3LDcgKzE0MCwxNSBAQCB1aW50MTZfdCBIVFRQU2VydmVyOjpwb3J0KCkg
Y29uc3QKIAogTlNVUkxSZXF1ZXN0ICpIVFRQU2VydmVyOjpyZXF1ZXN0KCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHA6Ly8xMjcuMC4wLjE6JWQvIiwgcG9y
dCgpXV1dOworICAgIE5TU3RyaW5nICpmb3JtYXQ7CisgICAgc3dpdGNoIChtX3Byb3RvY29sKSB7
CisgICAgY2FzZSBQcm90b2NvbDo6SHR0cDoKKyAgICAgICAgZm9ybWF0ID0gQCJodHRwOi8vMTI3
LjAuMC4xOiVkLyI7CisgICAgY2FzZSBQcm90b2NvbDo6SHR0cHM6CisgICAgY2FzZSBQcm90b2Nv
bDo6SHR0cHNXaXRoTGVnYWN5VExTOgorICAgICAgICBmb3JtYXQgPSBAImh0dHBzOi8vMTI3LjAu
MC4xOiVkLyI7CisgICAgfQorICAgIHJldHVybiBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OmZvcm1hdCwg
cG9ydCgpXV1dOwogfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389713</attachid>
            <date>2020-02-04 14:51:05 -0800</date>
            <delta_ts>2020-02-04 16:18:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207207-20200204145103.patch</filename>
            <type>text/plain</type>
            <size>55254</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDIwLTAyLTA0ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRml4IHJhY2Ug
Y29uZGl0aW9uIGZvciBXS1dlYlZpZXcuX25lZ290aWF0ZWRMZWdhY3lUTFMgd2hlbiBsb2FkaW5n
IG1haW4gcmVzb3VvcmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDcyMDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmluY2x1ZGVDZXJ0aWZpY2F0ZUlu
Zm8gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJh
c2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjp1c2VkTGVnYWN5
VExTIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmRlY29k
ZSk6CisKIDIwMjAtMDItMDMgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIERvIG5vdCBjb3B5IGZlYXR1cmUgcG9saWN5IGluIGlzRmVhdHVyZVBvbGljeUFsbG93
ZWRCeURvY3VtZW50QW5kQWxsT3duZXJzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAkocmV2aXNpb24g
MjU1NTgwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3Bv
bnNlQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MSwxMSArMjYxLDEyIEBAIHZvaWQgUmVz
b3VyY2VSZXNwb25zZUJhc2U6OnNldFR5cGUoVHlwZSAKICAgICBtX3R5cGUgPSB0eXBlOwogfQog
Ci12b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjppbmNsdWRlQ2VydGlmaWNhdGVJbmZvKCkgY29u
c3QKK3ZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8oVXNl
ZExlZ2FjeVRMUyB1c2VkTGVnYWN5VExTKSBjb25zdAogewogICAgIGlmIChtX2NlcnRpZmljYXRl
SW5mbykKICAgICAgICAgcmV0dXJuOwogICAgIG1fY2VydGlmaWNhdGVJbmZvID0gc3RhdGljX2Nh
c3Q8Y29uc3QgUmVzb3VyY2VSZXNwb25zZSo+KHRoaXMpLT5wbGF0Zm9ybUNlcnRpZmljYXRlSW5m
bygpOworICAgIG1fdXNlZExlZ2FjeVRMUyA9IHVzZWRMZWdhY3lUTFM7CiB9CiAKIFN0cmluZyBS
ZXNvdXJjZVJlc3BvbnNlQmFzZTo6c3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25z
ZUJhc2UuaAkocmV2aXNpb24gMjU1NTgwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw4
IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiAKIGJvb2wgaXNTY3JpcHRBbGxvd2VkQnlOb3Nu
aWZmKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIAorZW51bSBjbGFzcyBVc2VkTGVnYWN5VExT
IDogYm9vbCB7IE5vLCBZZXMgfTsKKwogLy8gRG8gbm90IHVzZSB0aGlzIGNsYXNzIGRpcmVjdGx5
LCB1c2UgdGhlIGNsYXNzIFJlc291cmNlUmVzcG9uc2UgaW5zdGVhZAogY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZUJhc2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMTI3LDggKzEy
OSw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5h
bWUoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIHNhbml0aXplU3Vn
Z2VzdGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8oKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8oVXNlZExlZ2FjeVRMUyA9IFVzZWRMZWdhY3lUTFM6Ok5v
KSBjb25zdDsKICAgICBjb25zdCBPcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+JiBjZXJ0aWZpY2F0
ZUluZm8oKSBjb25zdCB7IHJldHVybiBtX2NlcnRpZmljYXRlSW5mbzsgfTsKKyAgICBib29sIHVz
ZWRMZWdhY3lUTFMoKSBjb25zdCB7IHJldHVybiBtX3VzZWRMZWdhY3lUTFMgPT0gVXNlZExlZ2Fj
eVRMUzo6WWVzOyB9CiAgICAgCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIHJldHVybiBwYXJzZWQg
dmFsdWVzIG9mIHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlIGhlYWRlcnMuCiAgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBjYWNoZUNvbnRyb2xDb250YWluc05vQ2FjaGUoKSBjb25zdDsKQEAgLTI0
Niw3ICsyNDksOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1JhbmdlUmVxdWVzdGVkIHsgZmFs
c2UgfTsKIAogcHJvdGVjdGVkOgotICAgIGludCBtX2h0dHBTdGF0dXNDb2RlIHsgMCB9OworICAg
IHNob3J0IG1faHR0cFN0YXR1c0NvZGUgeyAwIH07CisgICAgbXV0YWJsZSBVc2VkTGVnYWN5VExT
IG1fdXNlZExlZ2FjeVRMUyB7IFVzZWRMZWdhY3lUTFM6Ok5vIH07CiB9OwogCiBpbmxpbmUgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGEsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIGIpIHsgcmV0dXJuIFJlc291cmNlUmVzcG9uc2VCYXNlOjpjb21wYXJlKGEsIGIpOyB9
CkBAIC0yNzMsMTIgKzI3NywxMyBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjplbmNvZGUo
RW5jb2RlCiAgICAgaWYgKEVuY29kZXI6OmlzSVBDRW5jb2RlcikKICAgICAgICAgZW5jb2RlciA8
PCBtX25ldHdvcmtMb2FkTWV0cmljczsKIAotICAgIGVuY29kZXIgPDwgbV9odHRwU3RhdHVzQ29k
ZTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGludD4obV9odHRwU3RhdHVzQ29kZSk7CiAg
ICAgZW5jb2RlciA8PCBtX2NlcnRpZmljYXRlSW5mbzsKICAgICBlbmNvZGVyLmVuY29kZUVudW0o
bV9zb3VyY2UpOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShtX3R5cGUpOwogICAgIGVuY29kZXIu
ZW5jb2RlRW51bShtX3RhaW50aW5nKTsKLSAgICBlbmNvZGVyIDw8IG1faXNSZWRpcmVjdGVkOwor
ICAgIHVpbnQ4X3QgaXNSZWRpcmVjdGVkQW5kVXNlZExlZ2FjeVRMUyA9IChtX2lzUmVkaXJlY3Rl
ZCA/IDB4MSA6IDB4MCkgfCAobV91c2VkTGVnYWN5VExTID09IFVzZWRMZWdhY3lUTFM6OlllcyA/
IDB4MiA6IDB4MCk7CisgICAgZW5jb2RlciA8PCBpc1JlZGlyZWN0ZWRBbmRVc2VkTGVnYWN5VExT
OwogICAgIGVuY29kZXIgPDwgbV9pc1JhbmdlUmVxdWVzdGVkOwogfQogCkBAIC0zMTMsOCArMzE4
LDEwIEBAIGJvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmRlY29kZShEZWNvZGUKICAgICAvLyBU
aGUgbmV0d29ya0xvYWRNZXRyaWNzIGluZm8gaXMgb25seSBzZW5kIG92ZXIgSVBDIGFuZCBub3Qg
c3RvcmVkIGluIGRpc2sgY2FjaGUuCiAgICAgaWYgKERlY29kZXI6OmlzSVBDRGVjb2RlciAmJiAh
ZGVjb2Rlci5kZWNvZGUocmVzcG9uc2UubV9uZXR3b3JrTG9hZE1ldHJpY3MpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNwb25zZS5tX2h0dHBTdGF0
dXNDb2RlKSkKKyAgICBpbnQgaHR0cFN0YXR1c0NvZGU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShodHRwU3RhdHVzQ29kZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXNwb25zZS5t
X2h0dHBTdGF0dXNDb2RlID0gaHR0cFN0YXR1c0NvZGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXNwb25zZS5tX2NlcnRpZmljYXRlSW5mbykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShyZXNwb25zZS5tX3NvdXJjZSkpCkBAIC0zMjMsMTAg
KzMzMCwxMSBAQCBib29sIFJlc291cmNlUmVzcG9uc2VCYXNlOjpkZWNvZGUoRGVjb2RlCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShyZXNwb25zZS5t
X3RhaW50aW5nKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGJvb2wgaXNSZWRpcmVjdGVk
ID0gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShpc1JlZGlyZWN0ZWQpKQorICAgIHVp
bnQ4X3QgaXNSZWRpcmVjdGVkQW5kVXNlZExlZ2FjeVRMUyA9IDA7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShpc1JlZGlyZWN0ZWRBbmRVc2VkTGVnYWN5VExTKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIHJlc3BvbnNlLm1faXNSZWRpcmVjdGVkID0gaXNSZWRpcmVjdGVkOworICAgIHJl
c3BvbnNlLm1faXNSZWRpcmVjdGVkID0gaXNSZWRpcmVjdGVkQW5kVXNlZExlZ2FjeVRMUyAmIDB4
MTsKKyAgICByZXNwb25zZS5tX3VzZWRMZWdhY3lUTFMgPSAoaXNSZWRpcmVjdGVkQW5kVXNlZExl
Z2FjeVRMUyAmIDB4MikgPyBVc2VkTGVnYWN5VExTOjpZZXMgOiBVc2VkTGVnYWN5VExTOjpObzsK
IAogICAgIGJvb2wgaXNSYW5nZVJlcXVlc3RlZCA9IGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoaXNSYW5nZVJlcXVlc3RlZCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjU1NTgwKQor
KysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw3MCBA
QAorMjAyMC0wMi0wNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIEZpeCByYWNlIGNvbmRpdGlvbiBmb3IgV0tXZWJWaWV3Ll9uZWdvdGlhdGVk
TGVnYWN5VExTIHdoZW4gbG9hZGluZyBtYWluIHJlc291b3JjZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3MjA3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gUGFnZUxvYWRTdGF0ZTo6ZGlkQ29tbWl0
TG9hZCwgSSB3YXMgcmVzZXR0aW5nIHRoZSB2YWx1ZSBvZiBfbmVnb3RpYXRlZExlZ2FjeVRMUyB0
byBmYWxzZS4KKyAgICAgICAgVGhhdCBjcmVhdGVkIGEgcmFjZSBjb25kaXRpb24gd2hlbiBsb2Fk
aW5nIHRoZSBtYWluIHJlc291cmNlIGJlY2F1c2UgdGhlIE5ldHdvcmtQcm9jZXNzIHdvdWxkCisg
ICAgICAgIG1lc3NhZ2UgdGhlIFVJUHJvY2VzcyBzZXR0aW5nIF9uZWdvdGlhdGVkTGVnYWN5VExT
IHRvIGZhbHNlLCB3aGlsZSB0aGUgTmV0d29ya1Byb2Nlc3Mgd291bGQKKyAgICAgICAgbWVzc2Fn
ZSB0aGUgV2ViUHJvY2VzcyB3aGljaCB3b3VsZCBtZXNzYWdlIHRoZSBVSVByb2Nlc3MgdG8gY2Fs
bCBQYWdlTG9hZFN0YXRlOjpkaWRDb21taXRMb2FkCisgICAgICAgIHdoaWNoIHdvdWxkIHJlc2V0
IGl0IHRvIGZhbHNlLiAgTm93IGl0IHJlc2V0cyBpdCB0byB0aGUgY29ycmVjdCB2YWx1ZSwgd2hh
dGV2ZXIgaXQgaXMuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gbWFpbnRhaW4gYmluYXJ5IGNvbXBh
dGliaWxpdHkgd2l0aCBleGlzdGluZyBkaXNrIGNhY2hlcywgSSBidW5kbGUgdHdvIGJvb2xlYW5z
IHRvZ2V0aGVyCisgICAgICAgIHdoZW4gZW5jb2RpbmcuICBUaGlzIHJlc3VsdHMgaW4gZXhpc3Rp
bmcgZGlzayBjYWNoZXMgc2F5aW5nIHRoZXkgbG9hZGVkIG5vdGhpbmcgb3ZlciBsZWdhY3kgVExT
LAorICAgICAgICB3aGljaCBpcyBzb21ld2hhdCBjb3JyZWN0IGJlY2F1c2UgVExTIDEuMCBhbmQg
MS4xIHdlcmUgbm90IGRlcHJlY2F0ZWQgd2hlbiB0aGUgcmVzb3VyY2VzIHdlcmUgZmV0Y2hlZC4K
KyAgICAgICAgR29pbmcgZm9yd2FyZCwgdGhlIGJpdCB3aWxsIGJlIHNldCBhbmQgdGhlIGRpc2sg
Y2FjaGUgZW50cmllcyB3aWxsIHN0b3JlIHdoZXRoZXIgdGhleSB3ZXJlIGxvYWRlZAorICAgICAg
ICBvdmVyIGxlZ2FjeSBUTFMuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gbm90IGluY3JlYXNlIHRo
ZSBtZW1vcnkgZm9vdHByaW50IG9mIFJlc291cmNlUmVzcG9uc2UsIEkgY2hhbmdlZCBtX2h0dHBT
dGF0dXNDb2RlIGZyb20KKyAgICAgICAgYW4gaW50IHRvIGEgc2hvcnQuICBJdCBqdXN0IG5lZWRz
IHRvIGJlIGFibGUgdG8gY292ZXIgdGhlIHZhbHVlcyAwLTYwMCBvciBzbywgd2hpY2ggcmVhbGx5
IG9ubHkgbmVlZHMgMTAgYml0cy4KKworICAgICAgICBDb3ZlcmVkIGJ5IG5ldyBBUEkgdGVzdHMu
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJl
Y2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVm
bGlnaHRDaGVja2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNr
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6Om5lZ290aWF0ZWRMZWdhY3lU
TFMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFzay5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDbGllbnQ6Om5lZ290aWF0
ZWRMZWdhY3lUTFMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtEYXRhVGFza0Jsb2IuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tC
bG9iOjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6Om5vdGlmeURpZFJl
Y2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjp0aHJvdHRsZURl
bGF5Q29tcGxldGVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6Om5lZ290aWF0ZWRM
ZWdhY3lUTFMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQaW5nTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9QaW5nTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtE
YXRhVGFza0NvY29hLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjpk
aWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBV
UkxTZXNzaW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVSZXNwb25zZTpjb21wbGV0aW9uSGFuZGxlcjpd
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDdXJsOjppbnZva2VEaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNr
U291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmRpc3BhdGNo
RGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VMb2FkU3RhdGU6OmRpZENvbW1pdExvYWQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1By
b3Zpc2lvbmFsUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdl
UHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1Byb3Zp
c2lvbmFsUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKToKKwogMjAyMC0wMi0wMyAgU2Ft
IFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgU3RhcnQgc3BsaXR0aW5nIHBs
YXRmb3JtIHNwZWNpZmljIG92ZXJyaWRlcyBvZiBkZWZhdWx0IGVuYWJsZSBiZWhhdmlvciBpbnRv
IHRoZWlyIG93biBmaWxlcwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAkocmV2aXNpb24g
MjU1NTgwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZs
aWdodENoZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBO
ZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJlYwogICAgIG1fbmV0d29ya1Byb2Nlc3Mt
PmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShtX3BhcmFtZXRlcnMuc2Vzc2lvbklELCBtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIG1f
cGFyYW1ldGVycy50b3BPcmlnaW4gPyAmbV9wYXJhbWV0ZXJzLnRvcE9yaWdpbi0+ZGF0YSgpIDog
bnVsbHB0ciwgY2hhbGxlbmdlLCBuZWdvdGlhdGVkTGVnYWN5VExTLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNw
b25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtD
T1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiByZXNwb25zZSwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0
aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZSIpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgJ
KHJldmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0NPUlNQcmVmbGlnaHRDaGVja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJl
ZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hh
bGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdh
Y3lUTFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21w
bGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVy
cm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFs
Qnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwpJbmRl
eDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNw
cAkocmV2aXNpb24gMjU1NTgwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrRGF0YVRhc2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgTmV0
d29ya0RhdGFUYXNrOjpzY2hlZHVsZUZhaWx1cmUoRmEKICAgICBtX2ZhaWx1cmVUaW1lci5zdGFy
dE9uZVNob3QoMF9zKTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVSZXNw
b25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZl
UmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVkTGVnYWN5VExT
IG5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBpZiAocmVzcG9uc2UuaXNIVFRQMDkoKSkgewogICAgICAgICBh
dXRvIHVybCA9IHJlc3BvbnNlLnVybCgpOwpAQCAtMTExLDE3ICsxMTEsMTEgQEAgdm9pZCBOZXR3
b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZQogICAgICAgICB9CiAgICAgfQogICAgIGlm
IChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3Zl
KHJlc3BvbnNlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBtX2NsaWVu
dC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBuZWdvdGlhdGVkTGVnYWN5
VExTLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgZWxzZQogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Rh
dGFUYXNrOjpuZWdvdGlhdGVkTGVnYWN5VExTKCkgY29uc3QKLXsKLSAgICBpZiAobV9jbGllbnQp
Ci0gICAgICAgIG1fY2xpZW50LT5uZWdvdGlhdGVkTGVnYWN5VExTKCk7Ci19Ci0KIGJvb2wgTmV0
d29ya0RhdGFUYXNrOjpzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSBjb25z
dAogewogICAgIHJldHVybiBtX2NsaWVudCA/IG1fY2xpZW50LT5zaG91bGRDYXB0dXJlRXh0cmFO
ZXR3b3JrTG9hZE1ldHJpY3MoKSA6IGZhbHNlOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCShyZXZpc2lvbiAyNTU1ODApCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCSh3b3JraW5nIGNvcHkp
CkBAIC02Miw3ICs2Miw3IEBAIGNsYXNzIE5ldHdvcmtEYXRhVGFza0NsaWVudCB7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29t
cGxldGlvbkhhbmRsZXImJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2hhbGxl
bmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lU
TFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VD
b21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJl
c3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBj
b25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVz
RXhwZWN0ZWRUb1NlbmQpID0gMDsKQEAgLTcwLDcgKzcwLDYgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBjYW5ub3RTaG93VVJMKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3YXNCbG9ja2Vk
QnlSZXN0cmljdGlvbnMoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbmVnb3RpYXRlZExlZ2Fj
eVRMUygpIGNvbnN0IHsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3
b3JrTG9hZE1ldHJpY3MoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdm9pZCBkaWRD
b21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKQEAg
LTkyLDggKzkxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXN1bWUoKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVBbmRDYW5jZWwoKSA9IDA7CiAKLSAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXImJik7Ci0gICAgdm9pZCBuZWdvdGlhdGVkTGVnYWN5VExTKCkgY29uc3Q7
CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpOwogICAg
IGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkgY29uc3Q7CiAKICAg
ICBlbnVtIGNsYXNzIFN0YXRlIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAkocmV2aXNpb24gMjU1NTgwKQorKysg
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjkwLDcgKzI5MCw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6
ZGlzcGF0Y2hEaWRSZWMKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgZGlkUmVjZWl2ZVJl
c3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUo
cHJvdGVjdGVkVGhpcyksIGVycm9yQ29kZV0oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgewor
ICAgIGRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgTmVnb3RpYXRlZExlZ2Fj
eVRMUzo6Tm8sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwg
ZXJyb3JDb2RlXShQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKSB7CiAgICAgICAgIExPRyhOZXR3
b3JrU2Vzc2lvbiwgIiVwIC0gTmV0d29ya0RhdGFUYXNrQmxvYjo6ZGlkUmVjZWl2ZVJlc3BvbnNl
IGNvbXBsZXRpb25IYW5kbGVyICgldSkiLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocG9s
aWN5QWN0aW9uKSk7CiAKICAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNhbmNlbGluZyB8
fCBtX3N0YXRlID09IFN0YXRlOjpDb21wbGV0ZWQpIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCShyZXZpc2lvbiAyNTU1ODApCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjA2LDEyICsyMDYsNyBAQCB2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdl
KEF1CiAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShtX3Rhc2stPnNlc3Npb25JRCgpLCBtX3Bh
cmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIG1fcGFyYW1ldGVycy50b3BPcmlnaW4gPyAmbV9wYXJh
bWV0ZXJzLnRvcE9yaWdpbi0+ZGF0YSgpIDogbnVsbHB0ciwgY2hhbGxlbmdlLCBuZWdvdGlhdGVk
TGVnYWN5VExTLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29y
a0xvYWQ6Om5lZ290aWF0ZWRMZWdhY3lUTFMoKSBjb25zdAotewotICAgIG1fbmV0d29ya1Byb2Nl
c3MtPmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLm5lZ290aWF0ZWRMZWdhY3lUTFMobV9wYXJhbWV0
ZXJzLndlYlBhZ2VQcm94eUlEKTsKLX0KLQotdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFu
ZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgTmVnb3RpYXRlZExlZ2FjeVRMUyBu
ZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBBU1NFUlQo
IW1fdGhyb3R0bGUpOwpAQCAtMjI2LDE2ICsyMjEsMTkgQEAgdm9pZCBOZXR3b3JrTG9hZDo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKFJlcwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbm90aWZ5
RGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CisgICAgaWYgKG5lZ290aWF0ZWRMZWdhY3lUTFMgPT0gTmVnb3RpYXRlZExlZ2Fj
eVRMUzo6WWVzKQorICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5hdXRoZW50aWNhdGlvbk1hbmFn
ZXIoKS5uZWdvdGlhdGVkTGVnYWN5VExTKG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCk7Cisg
ICAgCisgICAgbm90aWZ5RGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBuZWdv
dGlhdGVkTGVnYWN5VExTLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQg
TmV0d29ya0xvYWQ6Om5vdGlmeURpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYg
cmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgTmV0d29ya0xvYWQ6Om5vdGlmeURpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0ZWRMZWdhY3lUTFMgbmVnb3RpYXRlZExlZ2FjeVRMUywg
UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICByZXNwb25zZS5zZXRTb3VyY2UoUmVzb3Vy
Y2VSZXNwb25zZTo6U291cmNlOjpOZXR3b3JrKTsKICAgICBpZiAobV9wYXJhbWV0ZXJzLm5lZWRz
Q2VydGlmaWNhdGVJbmZvKQotICAgICAgICByZXNwb25zZS5pbmNsdWRlQ2VydGlmaWNhdGVJbmZv
KCk7CisgICAgICAgIHJlc3BvbnNlLmluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8obmVnb3RpYXRlZExl
Z2FjeVRMUyA9PSBOZWdvdGlhdGVkTGVnYWN5VExTOjpZZXMgPyBVc2VkTGVnYWN5VExTOjpZZXMg
OiBVc2VkTGVnYWN5VExTOjpObyk7CiAKICAgICBtX2NsaWVudC5nZXQoKS5kaWRSZWNlaXZlUmVz
cG9uc2UoV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0K
QEAgLTI2NSw3ICsyNjMsNyBAQCB2b2lkIE5ldHdvcmtMb2FkOjp0aHJvdHRsZURlbGF5Q29tcGxl
dGVkCiAKICAgICBhdXRvIHRocm90dGxlID0gV1RGTW92ZShtX3Rocm90dGxlKTsKIAotICAgIG5v
dGlmeURpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHRocm90dGxlLT5yZXNwb25zZSksIFdURk1v
dmUodGhyb3R0bGUtPnJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBub3RpZnlEaWRS
ZWNlaXZlUmVzcG9uc2UoV1RGTW92ZSh0aHJvdHRsZS0+cmVzcG9uc2UpLCBOZWdvdGlhdGVkTGVn
YWN5VExTOjpObywgV1RGTW92ZSh0aHJvdHRsZS0+cmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcikp
OwogfQogCiB2b2lkIE5ldHdvcmtMb2FkOjpkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVz
U2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKQpJbmRleDogU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAkocmV2aXNpb24gMjU1NTgwKQorKysg
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCSh3b3JraW5nIGNvcHkp
CkBAIC03NCwxNiArNzQsMTUgQEAgcHJpdmF0ZToKICAgICAvLyBOZXR3b3JrRGF0YVRhc2tDbGll
bnQKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlv
bkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5n
ZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYm
KSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIm
JikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBm
aW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50
NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwogICAgIHZvaWQgd2FzQmxvY2tl
ZCgpIGZpbmFsOwogICAgIHZvaWQgY2Fubm90U2hvd1VSTCgpIGZpbmFsOwogICAgIHZvaWQgd2Fz
QmxvY2tlZEJ5UmVzdHJpY3Rpb25zKCkgZmluYWw7Ci0gICAgdm9pZCBuZWdvdGlhdGVkTGVnYWN5
VExTKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIG5vdGlmeURpZFJlY2VpdmVSZXNwb25zZShX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJik7
CisgICAgdm9pZCBub3RpZnlEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYp
OwogICAgIHZvaWQgdGhyb3R0bGVEZWxheUNvbXBsZXRlZCgpOwogCiAgICAgc3RkOjpyZWZlcmVu
Y2Vfd3JhcHBlcjxOZXR3b3JrTG9hZENsaWVudD4gbV9jbGllbnQ7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHJl
dmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDggQEAgY2xhc3MgTmV0
d29ya0xvYWRDaGVja2VyOwogY2xhc3MgU2VydmljZVdvcmtlckZldGNoVGFzazsKIGNsYXNzIFdl
YlNXU2VydmVyQ29ubmVjdGlvbjsKIAorZW51bSBjbGFzcyBOZWdvdGlhdGVkTGVnYWN5VExTIDog
Ym9vbDsKKwogc3RydWN0IFJlc291cmNlTG9hZEluZm87CiAKIG5hbWVzcGFjZSBOZXR3b3JrQ2Fj
aGUgewpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAJKHJl
dmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjAsNyArMTYwLDcgQEAgdm9pZCBQaW5nTG9hZDo6ZGlk
UmVjZWl2ZUNoYWxsZW5nZShBdXRoZQogICAgIGRpZEZpbmlzaChSZXNvdXJjZUVycm9yIHsgU3Ry
aW5nKCksIDAsIGN1cnJlbnRVUkwoKSwgIkZhaWxlZCBIVFRQIGF1dGhlbnRpY2F0aW9uIl9zLCBS
ZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9sIH0pOwogfQogCi12b2lkIFBpbmdMb2Fk
OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNwb25z
ZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFBpbmdMb2FkOjpk
aWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVk
TGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlIC0gaHR0
cFN0YXR1c0NvZGU6ICVkIiwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7CiAgICAgYXV0byB3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUGluZ0xvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1BpbmdMb2FkLmgJKHJldmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENv
bXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShX
ZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBD
aGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhh
bmRsZXImJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25I
YW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRy
aWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2Vu
dCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLmgJKHJldmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAkod29ya2luZyBjb3B5KQpAQCAtNTQs
NyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5
dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVn
b3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJik7CiAgICAgdm9p
ZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29u
c3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5k
bGVyJiYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYm
KTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYp
OwogCiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRp
b25IYW5kbGVyJiYpOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCShyZXZpc2lvbiAyNTU1ODAp
CisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0Nv
Y29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNzMsMTAgKzM3MywxMCBAQCB2b2lkIE5ldHdvcmtE
YXRhVGFza0NvY29hOjpkaWRSZWNlaXZlRGF0CiAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZl
RGF0YShXVEZNb3ZlKGRhdGEpKTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgV2Vi
S2l0OjpSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVkTGVnYWN5VExTIG5lZ290aWF0ZWRMZWdh
Y3lUTFMsIFdlYktpdDo6UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIEVNSVRfU0lHTlBPU1QobV90YXNrLCAicmVjZWl2ZWQgcmVzcG9uc2UgaGVh
ZGVycyIpOwotICAgIE5ldHdvcmtEYXRhVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUo
cmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgTmV0d29ya0RhdGFU
YXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSksIG5lZ290aWF0ZWRMZWdh
Y3lUTFMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrRGF0
YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2Nv
YS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtTZXNzaW9uQ29jb2EubW0JKHJldmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQkod29ya2luZyBjb3B5
KQpAQCAtODE4LDI0ICs4MTgsMjIgQEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24g
KilzZXNzaQogICAgIGlmIChhdXRvKiBuZXR3b3JrRGF0YVRhc2sgPSBbc2VsZiBleGlzdGluZ1Rh
c2s6ZGF0YVRhc2tdKSB7CiAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAg
ICAgICAgYm9vbCBuZWdvdGlhdGVkTGVnYWN5VExTID0gZmFsc2U7CisgICAgICAgIE5lZ290aWF0
ZWRMZWdhY3lUTFMgbmVnb3RpYXRlZExlZ2FjeVRMUyA9IE5lZ290aWF0ZWRMZWdhY3lUTFM6Ok5v
OwogI2lmIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkKICAgICAgICAgTlNVUkxTZXNzaW9u
VGFza1RyYW5zYWN0aW9uTWV0cmljcyAqbWV0cmljcyA9IGRhdGFUYXNrLl9pbmNvbXBsZXRlVGFz
a01ldHJpY3MudHJhbnNhY3Rpb25NZXRyaWNzLmxhc3RPYmplY3Q7CiAgICAgICAgIGF1dG8gdGxz
VmVyc2lvbiA9ICh0bHNfcHJvdG9jb2xfdmVyc2lvbl90KW1ldHJpY3MubmVnb3RpYXRlZFRMU1By
b3RvY29sVmVyc2lvbi51bnNpZ25lZFNob3J0VmFsdWU7CiAgICAgICAgIGlmICh0bHNWZXJzaW9u
ID09IHRsc19wcm90b2NvbF92ZXJzaW9uX1RMU3YxMCB8fCB0bHNWZXJzaW9uID09IHRsc19wcm90
b2NvbF92ZXJzaW9uX1RMU3YxMSkKLSAgICAgICAgICAgIG5lZ290aWF0ZWRMZWdhY3lUTFMgPSB0
cnVlOworICAgICAgICAgICAgbmVnb3RpYXRlZExlZ2FjeVRMUyA9IE5lZ290aWF0ZWRMZWdhY3lU
TFM6OlllczsKICAgICAgICAgVU5VU0VEX1BBUkFNKG1ldHJpY3MpOwogI2Vsc2UgLy8gV2UgZG8g
bm90IG5lZWQgdG8gY2hlY2sgX1RMU05lZ290aWF0ZWRQcm90b2NvbFZlcnNpb24gaWYgd2UgaGF2
ZSBtZXRyaWNzLm5lZ290aWF0ZWRUTFNQcm90b2NvbFZlcnNpb24gYmVjYXVzZSBpdCB3b3JrcyBh
dCByZXNwb25zZSB0aW1lIGV2ZW4gYmVmb3JlIHJkYXI6Ly9wcm9ibGVtLzU2NTIyNjAxCiAgICAg
ICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgIGlmIChbZGF0
YVRhc2sgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfVExTTmVnb3RpYXRlZFByb3RvY29s
VmVyc2lvbildKSB7CiAgICAgICAgICAgICBTU0xQcm90b2NvbCB0bHNWZXJzaW9uID0gW2RhdGFU
YXNrIF9UTFNOZWdvdGlhdGVkUHJvdG9jb2xWZXJzaW9uXTsKICAgICAgICAgICAgIGlmICh0bHNW
ZXJzaW9uID09IGtUTFNQcm90b2NvbDExIHx8IHRsc1ZlcnNpb24gPT0ga1RMU1Byb3RvY29sMSkK
LSAgICAgICAgICAgICAgICBuZWdvdGlhdGVkTGVnYWN5VExTID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICBuZWdvdGlhdGVkTGVnYWN5VExTID0gTmVnb3RpYXRlZExlZ2FjeVRMUzo6WWVzOwogICAg
ICAgICB9CiAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogI2VuZGlm
Ci0gICAgICAgIGlmIChuZWdvdGlhdGVkTGVnYWN5VExTKQotICAgICAgICAgICAgbmV0d29ya0Rh
dGFUYXNrLT5uZWdvdGlhdGVkTGVnYWN5VExTKCk7CiAgICAgICAgIAogICAgICAgICAvLyBBdm9p
ZCBNSU1FIHR5cGUgc25pZmZpbmcgaWYgdGhlIHJlc3BvbnNlIGNvbWVzIGJhY2sgYXMgMzA0IE5v
dCBNb2RpZmllZC4KICAgICAgICAgaW50IHN0YXR1c0NvZGUgPSBbcmVzcG9uc2UgaXNLaW5kT2ZD
bGFzczpOU0hUVFBVUkxSZXNwb25zZS5jbGFzc10gPyBbKE5TSFRUUFVSTFJlc3BvbnNlICopcmVz
cG9uc2Ugc3RhdHVzQ29kZV0gOiAwOwpAQCAtODU0LDcgKzg1Miw3IEBAIC0gKHZvaWQpVVJMU2Vz
c2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2kKICAgICAgICAgY29weVRpbWluZ0RhdGEoW2RhdGFU
YXNrIF90aW1pbmdEYXRhXSwgcmVzb3VyY2VSZXNwb25zZS5kZXByZWNhdGVkTmV0d29ya0xvYWRN
ZXRyaWNzKCkpOwogCiAgICAgICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXJDb3B5ID0gQmxvY2tf
Y29weShjb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgICAgIG5ldHdvcmtEYXRhVGFzay0+ZGlkUmVj
ZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzb3VyY2VSZXNwb25zZSksIFtjb21wbGV0aW9uSGFuZGxl
ckNvcHksIHRhc2tJZGVudGlmaWVyXShXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9u
KSB7CisgICAgICAgIG5ldHdvcmtEYXRhVGFzay0+ZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUo
cmVzb3VyY2VSZXNwb25zZSksIG5lZ290aWF0ZWRMZWdhY3lUTFMsIFtjb21wbGV0aW9uSGFuZGxl
ckNvcHksIHRhc2tJZGVudGlmaWVyXShXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9u
KSB7CiAjaWYgIUxPR19ESVNBQkxFRAogICAgICAgICAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAi
JWxsdSBkaWRSZWNlaXZlUmVzcG9uc2UgY29tcGxldGlvbkhhbmRsZXIgKCVkKSIsIHRhc2tJZGVu
dGlmaWVyLCBwb2xpY3lBY3Rpb24pOwogI2Vsc2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAJKHJl
dmlzaW9uIDI1NTU4MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3
b3JrRGF0YVRhc2tDdXJsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI0LDcgKzIyNCw3IEBAIGJv
b2wgTmV0d29ya0RhdGFUYXNrQ3VybDo6c2hvdWxkUmVkaXJlY3QKIAogdm9pZCBOZXR3b3JrRGF0
YVRhc2tDdXJsOjppbnZva2VEaWRSZWNlaXZlUmVzcG9uc2UoKQogewotICAgIGRpZFJlY2VpdmVS
ZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlKG1fcmVzcG9uc2UpLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpXShQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKSB7CisgICAgZGlk
UmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UobV9yZXNwb25zZSksIE5lZ290aWF0ZWRM
ZWdhY3lUTFM6Ok5vLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShQb2xp
Y3lBY3Rpb24gcG9saWN5QWN0aW9uKSB7CiAgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpD
YW5jZWxpbmcgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6Q29tcGxldGVkKQogICAgICAgICAgICAgcmV0
dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0Rh
dGFUYXNrU291cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCShyZXZpc2lvbiAyNTU1ODApCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM3OCw3ICszNzgsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6
OmRpc3BhdGNoRGlkUmVjCiAgICAgZGVwcmVjYXRlZFJlc3BvbnNlTWV0cmljcy5yZXF1ZXN0U3Rh
cnQgPSBtX25ldHdvcmtMb2FkTWV0cmljcy5yZXF1ZXN0U3RhcnQ7CiAgICAgZGVwcmVjYXRlZFJl
c3BvbnNlTWV0cmljcy5yZXNwb25zZVN0YXJ0ID0gbV9uZXR3b3JrTG9hZE1ldHJpY3MucmVzcG9u
c2VTdGFydDsKIAotICAgIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlKG1fcmVz
cG9uc2UpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShQb2xpY3lBY3Rp
b24gcG9saWN5QWN0aW9uKSB7CisgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9u
c2UobV9yZXNwb25zZSksIE5lZ290aWF0ZWRMZWdhY3lUTFM6Ok5vLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpXShQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKSB7CiAgICAg
ICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDYW5jZWxpbmcgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6
Q29tcGxldGVkKSB7CiAgICAgICAgICAgICBjbGVhclJlcXVlc3QoKTsKICAgICAgICAgICAgIHJl
dHVybjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuY3BwCShy
ZXZpc2lvbiAyNTU1ODApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE3LDcgKzMxNyw3IEBAIHZvaWQgUGFnZUxvYWRTdGF0
ZTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG8KICAgICBtX3VuY29tbWl0dGVkU3RhdGUudW5yZWFjaGFi
bGVVUkwgPSBtX2xhc3RVbnJlYWNoYWJsZVVSTDsKIH0KIAotdm9pZCBQYWdlTG9hZFN0YXRlOjpk
aWRDb21taXRMb2FkKGNvbnN0IFRyYW5zYWN0aW9uOjpUb2tlbiYgdG9rZW4sIFdlYkNlcnRpZmlj
YXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBib29sIGhhc0luc2VjdXJlQ29udGVudCkKK3ZvaWQg
UGFnZUxvYWRTdGF0ZTo6ZGlkQ29tbWl0TG9hZChjb25zdCBUcmFuc2FjdGlvbjo6VG9rZW4mIHRv
a2VuLCBXZWJDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCBoYXNJbnNlY3Vy
ZUNvbnRlbnQsIGJvb2wgdXNlZExlZ2FjeVRMUykKIHsKICAgICBBU1NFUlRfVU5VU0VEKHRva2Vu
LCAmdG9rZW4ubV9wYWdlTG9hZFN0YXRlID09IHRoaXMpOwogICAgIEFTU0VSVChtX3VuY29tbWl0
dGVkU3RhdGUuc3RhdGUgPT0gU3RhdGU6OlByb3Zpc2lvbmFsKTsKQEAgLTMyOCw3ICszMjgsNyBA
QCB2b2lkIFBhZ2VMb2FkU3RhdGU6OmRpZENvbW1pdExvYWQoY29uc3QgCiAKICAgICBtX3VuY29t
bWl0dGVkU3RhdGUudXJsID0gbV91bmNvbW1pdHRlZFN0YXRlLnByb3Zpc2lvbmFsVVJMOwogICAg
IG1fdW5jb21taXR0ZWRTdGF0ZS5wcm92aXNpb25hbFVSTCA9IFN0cmluZygpOwotICAgIG1fdW5j
b21taXR0ZWRTdGF0ZS5uZWdvdGlhdGVkTGVnYWN5VExTID0gZmFsc2U7CisgICAgbV91bmNvbW1p
dHRlZFN0YXRlLm5lZ290aWF0ZWRMZWdhY3lUTFMgPSB1c2VkTGVnYWN5VExTOwogCiAgICAgbV91
bmNvbW1pdHRlZFN0YXRlLnRpdGxlID0gU3RyaW5nKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5oCShyZXZpc2lvbiAyNTU1ODApCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw3ICsx
NjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92
aXNpb25hbExvYWQoY29uc3QgVHJhbnNhY3Rpb246OlRva2VuJiwgY29uc3QgU3RyaW5nJiB1cmwp
OwogICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBUcmFuc2FjdGlvbjo6VG9r
ZW4mKTsKIAotICAgIHZvaWQgZGlkQ29tbWl0TG9hZChjb25zdCBUcmFuc2FjdGlvbjo6VG9rZW4m
LCBXZWJDZXJ0aWZpY2F0ZUluZm8mLCBib29sIGhhc0luc2VjdXJlQ29udGVudCk7CisgICAgdm9p
ZCBkaWRDb21taXRMb2FkKGNvbnN0IFRyYW5zYWN0aW9uOjpUb2tlbiYsIFdlYkNlcnRpZmljYXRl
SW5mbyYsIGJvb2wgaGFzSW5zZWN1cmVDb250ZW50LCBib29sIHVzZWRMZWdhY3lUTFMpOwogICAg
IHZvaWQgZGlkRmluaXNoTG9hZChjb25zdCBUcmFuc2FjdGlvbjo6VG9rZW4mKTsKICAgICB2b2lk
IGRpZEZhaWxMb2FkKGNvbnN0IFRyYW5zYWN0aW9uOjpUb2tlbiYpOwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCShyZXZpc2lv
biAyNTU1ODApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIFByb3Zpc2lvbmFs
UGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzCiAgICAgbV9wYWdlLmRpZEZhaWxQcm92aXNpb25hbExv
YWRGb3JGcmFtZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBmcmFtZUlELCBXVEZNb3ZlKGZy
YW1lU2VjdXJpdHlPcmlnaW4pLCBuYXZpZ2F0aW9uSUQsIHByb3Zpc2lvbmFsVVJMLCBlcnJvciwg
d2lsbENvbnRpbnVlTG9hZGluZywgdXNlckRhdGEpOyAvLyBNYXkgZGVsZXRlIHx0aGlzfC4KIH0K
IAotdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZy
YW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJ
bmZvLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0lu
c2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYg
dXNlckRhdGEpCit2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJh
bWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWlu
dDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0
aWZpY2F0ZUluZm8sIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250YWluc1BsdWdpbkRvY3Vt
ZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2Vj
dXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIGlmICghdmFsaWRh
dGVJbnB1dChmcmFtZUlELCBuYXZpZ2F0aW9uSUQpKQogICAgICAgICByZXR1cm47CkBAIC0yNzQs
NyArMjc0LDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZAogICAg
IG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlSUQpOwogCiAgICAgbV93YXNDb21taXR0
ZWQgPSB0cnVlOwotICAgIG1fcGFnZS5jb21taXRQcm92aXNpb25hbFBhZ2UoZnJhbWVJRCwgbmF2
aWdhdGlvbklELCBtaW1lVHlwZSwgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIGZyYW1l
TG9hZFR5cGUsIGNlcnRpZmljYXRlSW5mbywgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgZm9yY2Vk
SGFzSW5zZWN1cmVDb250ZW50LCB1c2VyRGF0YSk7IC8vIFdpbGwgZGVsZXRlIHx0aGlzfC4KKyAg
ICBtX3BhZ2UuY29tbWl0UHJvdmlzaW9uYWxQYWdlKGZyYW1lSUQsIG5hdmlnYXRpb25JRCwgbWlt
ZVR5cGUsIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBmcmFtZUxvYWRUeXBlLCBjZXJ0
aWZpY2F0ZUluZm8sIHVzZWRMZWdhY3lUTFMsIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIGZvcmNl
ZEhhc0luc2VjdXJlQ29udGVudCwgdXNlckRhdGEpOyAvLyBXaWxsIGRlbGV0ZSB8dGhpc3wuCiB9
CiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25E
YXRhKGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmIHN0b3JlLCBGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQ
YWdlUHJveHkuaAkocmV2aXNpb24gMjU1NTgwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UHJvdmlzaW9uYWxQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDcgKzEyMiw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcsIFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRDcmVhdGVNYWluRnJhbWUoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IFVSTCYmLCBVUkwmJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmKTsKLSAgICB2b2lk
IGRpZENvbW1pdExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3Rv
bUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6
Q2VydGlmaWNhdGVJbmZvJiwgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxX
ZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgY29u
c3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRpZENvbW1pdExvYWRGb3JGcmFtZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVM
b2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiwgYm9vbCB1c2VkTGVnYWN5
VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0lu
c2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYp
OwogICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9y
aWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJM
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgV2ViQ29yZTo6V2lsbENvbnRpbnVlTG9h
ZGluZywgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIHN0YXJ0VVJMU2NoZW1lVGFzayhVUkxT
Y2hlbWVUYXNrUGFyYW1ldGVycyYmKTsKICAgICB2b2lkIGJhY2tGb3J3YXJkR29Ub0l0ZW0oY29u
c3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIGNvbnN0IFdlYkJhY2tGb3J3YXJkTGlz
dENvdW50cyYpPiYmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAkocmV2aXNpb24gMjU1NTgwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE1Nyw3ICszMTU3LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpbwogICAgIHNlbmRlci0+c2VuZChhY3Rpb24s
IG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSA6IDAsIGRvd25sb2FkSUQs
IFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpjb21t
aXRQcm92aXNpb25hbFBhZ2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRl
bnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlm
aWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwg
T3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNv
bnRlbnQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpjb21t
aXRQcm92aXNpb25hbFBhZ2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRl
bnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlm
aWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250
YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+
IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewog
ICAgIEFTU0VSVChtX3Byb3Zpc2lvbmFsUGFnZSk7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAiY29tbWl0UHJvdmlzaW9uYWxQYWdlOiBuZXdQSUQgPSAlaSIsIG1fcHJvdmlz
aW9uYWxQYWdlLT5wcm9jZXNzKCkucHJvY2Vzc0lkZW50aWZpZXIoKSk7CkBAIC0zMTkxLDcgKzMx
OTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlCiAgICAgY29u
c3QgYXV0byBvbGRXZWJQYWdlSUQgPSBtX3dlYlBhZ2VJRDsKICAgICBzd2FwVG9Qcm92aXNpb25h
bFBhZ2Uoc3RkOjpleGNoYW5nZShtX3Byb3Zpc2lvbmFsUGFnZSwgbnVsbHB0cikpOwogCi0gICAg
ZGlkQ29tbWl0TG9hZEZvckZyYW1lKGZyYW1lSUQsIG5hdmlnYXRpb25JRCwgbWltZVR5cGUsIGZy
YW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBmcmFtZUxvYWRUeXBlLCBjZXJ0aWZpY2F0ZUlu
Zm8sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgdXNl
ckRhdGEpOworICAgIGRpZENvbW1pdExvYWRGb3JGcmFtZShmcmFtZUlELCBuYXZpZ2F0aW9uSUQs
IG1pbWVUeXBlLCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgZnJhbWVMb2FkVHlwZSwg
Y2VydGlmaWNhdGVJbmZvLCB1c2VkTGVnYWN5VExTLCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBm
b3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIHVzZXJEYXRhKTsKIAogICAgIG1faW5zcGVjdG9yQ29u
dHJvbGxlci0+ZGlkQ29tbWl0UHJvdmlzaW9uYWxQYWdlKG9sZFdlYlBhZ2VJRCwgbV93ZWJQYWdl
SUQpOwogfQpAQCAtNDQ3Nyw3ICs0NDc3LDcgQEAgc3RhdGljIE9wdGlvblNldDxDcm9zc1NpdGVO
YXZpZ2F0aW9uRGF0YQogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRM
b2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92
aWRlciwgdWludDMyX3Qgb3BhcXVlRnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlm
aWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwg
T3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50PiBoYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVz
ZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJh
bWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWlu
dDMyX3Qgb3BhcXVlRnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZv
JiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250YWluc1BsdWdp
bkRvY3VtZW50LCBPcHRpb25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+IGhhc0luc2VjdXJlQ29udGVu
dCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIExPRyhMb2FkaW5nLCAiKExvYWRp
bmcpIFdlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBkaWRDb21taXRMb2FkRm9yRnJhbWUgaW4gbmF2
aWdhdGlvbiAlIiBQUkl1NjQsIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uSUQp
OwogICAgIExPRyhCYWNrRm9yd2FyZCwgIihCYWNrL0ZvcndhcmQpIEFmdGVyIGxvYWQgY29tbWl0
LCBiYWNrL2ZvcndhcmQgbGlzdCBpcyBub3c6JXMiLCBtX2JhY2tGb3J3YXJkTGlzdC0+bG9nZ2lu
Z1N0cmluZygpKTsKQEAgLTQ1MTksNyArNDUxOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRD
b21taXRMb2FkRm9yRnJhbWUKICAgICBib29sIG1hcmtQYWdlSW5zZWN1cmUgPSBoYXNJbnNlY3Vy
ZUNvbnRlbnQgPyBoYXNJbnNlY3VyZUNvbnRlbnQudmFsdWUoKSA9PSBIYXNJbnNlY3VyZUNvbnRl
bnQ6OlllcyA6IG1fdHJlYXRzU0hBMUNlcnRpZmljYXRlc0FzSW5zZWN1cmUgJiYgY2VydGlmaWNh
dGVJbmZvLmNvbnRhaW5zTm9uUm9vdFNIQTFTaWduZWRDZXJ0aWZpY2F0ZSgpOwogCiAgICAgaWYg
KGZyYW1lLT5pc01haW5GcmFtZSgpKSB7Ci0gICAgICAgIG1fcGFnZUxvYWRTdGF0ZS5kaWRDb21t
aXRMb2FkKHRyYW5zYWN0aW9uLCB3ZWJDZXJ0aWZpY2F0ZUluZm8sIG1hcmtQYWdlSW5zZWN1cmUp
OworICAgICAgICBtX3BhZ2VMb2FkU3RhdGUuZGlkQ29tbWl0TG9hZCh0cmFuc2FjdGlvbiwgd2Vi
Q2VydGlmaWNhdGVJbmZvLCBtYXJrUGFnZUluc2VjdXJlLCB1c2VkTGVnYWN5VExTKTsKICAgICAg
ICAgbV9zaG91bGRTdXBwcmVzc05leHRBdXRvbWF0aWNOYXZpZ2F0aW9uU25hcHNob3QgPSBmYWxz
ZTsKICAgICB9IGVsc2UgaWYgKG1hcmtQYWdlSW5zZWN1cmUpCiAgICAgICAgIG1fcGFnZUxvYWRT
dGF0ZS5kaWREaXNwbGF5T3JSdW5JbnNlY3VyZUNvbnRlbnQodHJhbnNhY3Rpb24pOwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI1NTU4MCkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTg2LDcgKzE1ODYsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIFByb3Zpc2lvbmFsUGFn
ZVByb3h5KiBwcm92aXNpb25hbFBhZ2VQcm94eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdmlzaW9u
YWxQYWdlLmdldCgpOyB9Ci0gICAgdm9pZCBjb21taXRQcm92aXNpb25hbFBhZ2UoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1l
TG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYsIGJvb2wgY29udGFpbnNQ
bHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3Jj
ZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBjb21taXRQ
cm92aXNpb25hbFBhZ2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50
UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmlj
YXRlSW5mbyYsIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50
LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJl
Q29udGVudCwgY29uc3QgVXNlckRhdGEmKTsKIAogICAgIC8vIExvZ2ljIHNoYXJlZCBiZXR3ZWVu
IHRoZSBXZWJQYWdlUHJveHkgYW5kIHRoZSBQcm92aXNpb25hbFBhZ2VQcm94eS4KICAgICB2b2lk
IGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94
eT4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVS
TCYmLCBVUkwmJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmKTsKQEAgLTE3MzYsNyAr
MTczNiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZy
YW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRDaGFuZ2VQcm92aXNp
b25hbFVSTEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBVUkwmJik7CiAgICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBm
cmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYg
cHJvdmlzaW9uYWxVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBXZWJDb3JlOjpX
aWxsQ29udGludWVMb2FkaW5nLCBjb25zdCBVc2VyRGF0YSYpOwotICAgIHZvaWQgZGlkQ29tbWl0
TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFBy
b3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0
ZUluZm8mLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhh
c0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0
YSYpOworICAgIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29s
IGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBj
b25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mLCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wg
Y29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250
ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9p
ZCBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZEZp
bmlzaExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZEZhaWxMb2FkRm9yRnJhbWUo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBVc2VyRGF0YSYpOwpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24g
MjU1NTgwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNyArMTI2LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZVByb3h5IHsKICAgICBEaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciBmcmFtZUlEKQogICAgIERpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJh
bWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgVVJMIHVybCkKICAgICBEaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBTdHJpbmcgcHJv
dmlzaW9uYWxVUkwsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIGVudW06Ym9vbCBXZWJD
b3JlOjpXaWxsQ29udGludWVMb2FkaW5nIHdpbGxDb250aW51ZUxvYWRpbmcsIFdlYktpdDo6VXNl
ckRhdGEgdXNlckRhdGEpCi0gICAgRGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFN0cmluZyBtaW1lVHlw
ZSwgYm9vbCBoYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGxvYWRUeXBlLCBXZWJD
b3JlOjpDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvLCBib29sIGNvbnRhaW5zUGx1Z2lu
RG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFz
SW5zZWN1cmVDb250ZW50LCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQorICAgIERpZENvbW1p
dExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBTdHJpbmcgbWltZVR5cGUsIGJvb2wgaGFzQ3VzdG9tQ29udGVudFByb3Zp
ZGVyLCB1aW50MzJfdCBsb2FkVHlwZSwgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvIGNlcnRpZmlj
YXRlSW5mbywgYm9vbCB1c2VkTGVnYWN5VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQs
IE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVD
b250ZW50LCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIERpZEZhaWxMb2FkRm9yRnJh
bWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0
YSkKICAgICBEaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJLaXQ6OlVzZXJEYXRhIHVz
ZXJEYXRhKQogICAgIERpZEZpbmlzaExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJE
YXRhKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAyNTU1
ODApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NjAsNyArNTYwLDcgQEAgdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDbwogICAgIHdlYlBhZ2UtPnNhbmRib3hF
eHRlbnNpb25UcmFja2VyKCkuZGlkQ29tbWl0UHJvdmlzaW9uYWxMb2FkKG1fZnJhbWUpOwogCiAg
ICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCi0gICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpEaWRDb21taXRMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBk
b2N1bWVudExvYWRlci5uYXZpZ2F0aW9uSUQoKSwgZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKS5t
aW1lVHlwZSgpLCBtX2ZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBzdGF0aWNfY2FzdDx1
aW50MzJfdD4obV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmxvYWRUeXBlKCkpLCB2YWx1
ZU9yQ29tcHV0ZShkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLmNlcnRpZmljYXRlSW5mbygpLCBb
XSB7IHJldHVybiBDZXJ0aWZpY2F0ZUluZm8oKTsgfSksIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5k
b2N1bWVudCgpLT5pc1BsdWdpbkRvY3VtZW50KCksIGhhc0luc2VjdXJlQ29udGVudCwgVXNlckRh
dGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2Vy
RGF0YS5nZXQoKSkuZ2V0KCkpKSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEaWRDb21taXRMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBkb2N1bWVu
dExvYWRlci5uYXZpZ2F0aW9uSUQoKSwgZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKS5taW1lVHlw
ZSgpLCBtX2ZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBzdGF0aWNfY2FzdDx1aW50MzJf
dD4obV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmxvYWRUeXBlKCkpLCB2YWx1ZU9yQ29t
cHV0ZShkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLmNlcnRpZmljYXRlSW5mbygpLCBbXSB7IHJl
dHVybiBDZXJ0aWZpY2F0ZUluZm8oKTsgfSksIGRvY3VtZW50TG9hZGVyLnJlc3BvbnNlKCkudXNl
ZExlZ2FjeVRMUygpLCBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKS0+aXNQbHVnaW5E
b2N1bWVudCgpLCBoYXNJbnNlY3VyZUNvbnRlbnQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkp
OwogICAgIHdlYlBhZ2UtPmRpZENvbW1pdExvYWQobV9mcmFtZSk7CiB9CiAKSW5kZXg6IFRvb2xz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NTY4
MikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisy
MDIwLTAyLTA0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgRml4IHJhY2UgY29uZGl0aW9uIGZvciBXS1dlYlZpZXcuX25lZ290aWF0ZWRMZWdh
Y3lUTFMgd2hlbiBsb2FkaW5nIG1haW4gcmVzb3VvcmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcyMDcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIVFRQU2VydmVyIG5vdyBzdXBwb3J0cyBIVFRQUy4g
VGVsbCB5b3VyIGZyaWVuZHMhCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0NoYWxsZW5nZS5tbToKKyAgICAgICAgKHRlc3RDZXJ0aWZpY2F0ZSk6CisgICAgICAg
ICh0ZXN0SWRlbnRpdHkpOgorICAgICAgICAoY3JlZGVudGlhbFdpdGhJZGVudGl0eSk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UTFNEZXByZWNhdGlvbi5tbToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OndlYlZpZXdXaXRoTmF2aWdhdGlvbkRlbGVnYXRlKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
Y29jb2EvSFRUUFNlcnZlci5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNl
cnZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OkhUVFBTZXJ2ZXIp
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6cmVxdWVzdCBjb25zdCk6CisK
IDIwMjAtMDItMDQgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAg
ICAgICAgIFtDTWFrZV0gQWRkIENhaXJvOjpDYWlybyB0YXJnZXQKSW5kZXg6IFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2hhbGxlbmdlLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2hhbGxlbmdlLm1tCShyZXZpc2lv
biAyNTU1ODApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NoYWxs
ZW5nZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogCiAjaW1wb3J0ICJjb25m
aWcuaCIKIAorI2ltcG9ydCAiSFRUUFNlcnZlci5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRp
ZXMuaCIKICNpbXBvcnQgIlRDUFNlcnZlci5oIgogI2ltcG9ydCAiVGVzdC5oIgpAQCAtNDMsMTEg
KzQ0LDE0IEBACiAKIHN0YXRpYyBib29sIG5hdmlnYXRpb25GaW5pc2hlZDsKIAotc3RhdGljIFJl
dGFpblB0cjxOU1VSTENyZWRlbnRpYWw+IGNyZWRlbnRpYWxXaXRoSWRlbnRpdHkoKQorc3RhdGlj
IFJldGFpblB0cjxTZWNDZXJ0aWZpY2F0ZVJlZj4gdGVzdENlcnRpZmljYXRlKCkKIHsKICAgICBh
dXRvIGNlcnRpZmljYXRlQnl0ZXMgPSBUZXN0V2ViS2l0QVBJOjpUQ1BTZXJ2ZXI6OnRlc3RDZXJ0
aWZpY2F0ZSgpOwotICAgIGF1dG8gY2VydGlmaWNhdGUgPSBhZG9wdENGKFNlY0NlcnRpZmljYXRl
Q3JlYXRlV2l0aERhdGEobnVsbHB0ciwgKF9fYnJpZGdlIENGRGF0YVJlZilbTlNEYXRhIGRhdGFX
aXRoQnl0ZXM6Y2VydGlmaWNhdGVCeXRlcy5kYXRhKCkgbGVuZ3RoOmNlcnRpZmljYXRlQnl0ZXMu
c2l6ZSgpXSkpOwotICAgIAorICAgIHJldHVybiBhZG9wdENGKFNlY0NlcnRpZmljYXRlQ3JlYXRl
V2l0aERhdGEobnVsbHB0ciwgKF9fYnJpZGdlIENGRGF0YVJlZilbTlNEYXRhIGRhdGFXaXRoQnl0
ZXM6Y2VydGlmaWNhdGVCeXRlcy5kYXRhKCkgbGVuZ3RoOmNlcnRpZmljYXRlQnl0ZXMuc2l6ZSgp
XSkpOworfQorCitSZXRhaW5QdHI8U2VjSWRlbnRpdHlSZWY+IHRlc3RJZGVudGl0eSgpCit7CiAg
ICAgYXV0byBwcml2YXRlS2V5Qnl0ZXMgPSBUZXN0V2ViS2l0QVBJOjpUQ1BTZXJ2ZXI6OnRlc3RQ
cml2YXRlS2V5KCk7CiAgICAgTlNEYXRhICpkZXJFbmNvZGVkUHJpdmF0ZUtleSA9IFtOU0RhdGEg
ZGF0YVdpdGhCeXRlczpwcml2YXRlS2V5Qnl0ZXMuZGF0YSgpIGxlbmd0aDpwcml2YXRlS2V5Qnl0
ZXMuc2l6ZSgpXTsKICAgICBOU0RpY3Rpb25hcnkqIG9wdGlvbnMgPSBAewpAQCAtNjEsMTAgKzY1
LDE1IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNVUkxDcmVkZW50aWFsPiBjcmVkZW4KICAgICBFWFBF
Q1RfTlVMTChlcnJvcik7CiAgICAgRVhQRUNUX05PVF9OVUxMKHByaXZhdGVLZXkuZ2V0KCkpOwog
Ci0gICAgYXV0byBpZGVudGl0eSA9IGFkb3B0Q0YoU2VjSWRlbnRpdHlDcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgY2VydGlmaWNhdGUuZ2V0KCksIHByaXZhdGVLZXkuZ2V0KCkpKTsKKyAgICBy
ZXR1cm4gYWRvcHRDRihTZWNJZGVudGl0eUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB0ZXN0
Q2VydGlmaWNhdGUoKS5nZXQoKSwgcHJpdmF0ZUtleS5nZXQoKSkpOworfQorCitzdGF0aWMgUmV0
YWluUHRyPE5TVVJMQ3JlZGVudGlhbD4gY3JlZGVudGlhbFdpdGhJZGVudGl0eSgpCit7CisgICAg
YXV0byBpZGVudGl0eSA9IHRlc3RJZGVudGl0eSgpOwogICAgIEVYUEVDVF9OT1RfTlVMTChpZGVu
dGl0eSk7CiAgICAgCi0gICAgcmV0dXJuIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbFdpdGhJ
ZGVudGl0eTppZGVudGl0eS5nZXQoKSBjZXJ0aWZpY2F0ZXM6QFsoaWQpY2VydGlmaWNhdGUuZ2V0
KCldIHBlcnNpc3RlbmNlOk5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZV07CisgICAgcmV0
dXJuIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbFdpdGhJZGVudGl0eTppZGVudGl0eS5nZXQo
KSBjZXJ0aWZpY2F0ZXM6QFsoaWQpdGVzdENlcnRpZmljYXRlKCkuZ2V0KCldIHBlcnNpc3RlbmNl
Ok5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZV07CiB9CiAKIEBpbnRlcmZhY2UgQ2hhbGxl
bmdlRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+CkluZGV4OiBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RMU0RlcHJlY2F0aW9uLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVExTRGVwcmVj
YXRpb24ubW0JKHJldmlzaW9uIDI1NTU4MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvVExTRGVwcmVjYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3
LDcgQEAKIAogI2lmIEhBVkUoU1NMKQogCisjaW1wb3J0ICJIVFRQU2VydmVyLmgiCiAjaW1wb3J0
ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVENQU2VydmVyLmgiCiAjaW1wb3J0ICJU
ZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCkBAIC0zNywxMyArMzgsMTQgQEAKICNpbXBvcnQgPFdl
YktpdC9XZWJLaXQuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL3RleHQv
U3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
I2ltcG9ydCA8V2ViS2l0L1dlYlVJS2l0U3VwcG9ydC5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkNv
cmVUaHJlYWQuaD4KICNlbmRpZgogCi0jaWYgSEFWRShUTFNfUFJPVE9DT0xfVkVSU0lPTl9UKQor
I2lmIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkgfHwgSEFWRShORVRXT1JLX0ZSQU1FV09S
SykKIEBpbnRlcmZhY2UgVExTT2JzZXJ2ZXIgOiBOU09iamVjdAogLSAodm9pZCl3YWl0VW50aWxO
ZWdvdGlhdGVkTGVnYWN5VExTQ2hhbmdlZDsKIEBlbmQKQEAgLTIyOCwxMyArMjMwLDkgQEAgVEVT
VChUTFNWZXJzaW9uLCBESVNBQkxFRF9OYXZpZ2F0aW9uRGVsZQogfQogCiAjaWYgSEFWRShUTFNf
UFJPVE9DT0xfVkVSU0lPTl9UKQotVEVTVChUTFNWZXJzaW9uLCBOZWdvdGlhdGVkTGVnYWN5VExT
KQotewotICAgIFRDUFNlcnZlciBzZXJ2ZXIoVENQU2VydmVyOjpQcm90b2NvbDo6SFRUUFMsIFtd
IChTU0wgKnNzbCkgewotICAgICAgICBUQ1BTZXJ2ZXI6OnJlc3BvbmRXaXRoT0soc3NsKTsKLSAg
ICAgICAgVENQU2VydmVyOjpyZXNwb25kV2l0aE9LKHNzbCk7Ci0gICAgfSwgdGxzMV8xKTsKIAor
c3RhdGljIHN0ZDo6cGFpcjxSZXRhaW5QdHI8V0tXZWJWaWV3PiwgUmV0YWluUHRyPFRlc3ROYXZp
Z2F0aW9uRGVsZWdhdGU+PiB3ZWJWaWV3V2l0aE5hdmlnYXRpb25EZWxlZ2F0ZSgpCit7CiAgICAg
YXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7CiAg
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwogICAgIFt3ZWJWaWV3
IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CkBAIC0yNDIsNiArMjQwLDIw
IEBAIFRFU1QoVExTVmVyc2lvbiwgTmVnb3RpYXRlZExlZ2FjeVRMUykKICAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2Qs
IE5TVVJMQXV0aGVudGljYXRpb25NZXRob2RTZXJ2ZXJUcnVzdCk7CiAgICAgICAgIGNhbGxiYWNr
KE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50aWFs
IGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0
XSk7CiAgICAgfV07CisgICAgcmV0dXJuIHsgd2ViVmlldywgZGVsZWdhdGUgfTsKK30KKworI2Vu
ZGlmIC8vIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkgfHwgSEFWRShORVRXT1JLX0ZSQU1F
V09SSykKKworI2lmIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkKKworVEVTVChUTFNWZXJz
aW9uLCBOZWdvdGlhdGVkTGVnYWN5VExTKQoreworICAgIEhUVFBTZXJ2ZXIgc2VydmVyKHsKKyAg
ICAgICAgeyAiLyIsIHsgImhlbGxvIiB9IH0KKyAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6
SHR0cHNXaXRoTGVnYWN5VExTKTsKKworICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHdl
YlZpZXdXaXRoTmF2aWdhdGlvbkRlbGVnYXRlKCk7CiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0
ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNT
dHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlci5w
b3J0KCldXV07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CiAKQEAgLTI2Miw3
ICsyNzQsNjQgQEAgVEVTVChUTFNWZXJzaW9uLCBOZWdvdGlhdGVkTGVnYWN5VExTKQogCiAgICAg
W3dlYlZpZXcgcmVtb3ZlT2JzZXJ2ZXI6b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAIl9uZWdv
dGlhdGVkTGVnYWN5VExTIl07CiB9Ci0jZW5kaWYKKworI2VuZGlmIC8vIEhBVkUoVExTX1BST1RP
Q09MX1ZFUlNJT05fVCkKKworI2lmIEhBVkUoTkVUV09SS19GUkFNRVdPUkspICYmIEhBVkUoVExT
X1BST1RPQ09MX1ZFUlNJT05fVCkKKworVEVTVChUTFNWZXJzaW9uLCBOYXZpZ2F0ZUJhY2spCit7
CisgICAgSFRUUFNlcnZlciBsZWdhY3lUTFNTZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyAiaGVs
bG8iIH0gfQorICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwc1dpdGhMZWdhY3lUTFMp
OworCisgICAgSFRUUFNlcnZlciBtb2Rlcm5UTFNTZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyAi
aGVsbG8iIH0gfQorICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CisgICAgCisg
ICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gd2ViVmlld1dpdGhOYXZpZ2F0aW9uRGVsZWdh
dGUoKTsKKyAgICBhdXRvIG9ic2VydmVyID0gYWRvcHROUyhbVExTT2JzZXJ2ZXIgbmV3XSk7Cisg
ICAgW3dlYlZpZXcgYWRkT2JzZXJ2ZXI6b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAIl9uZWdv
dGlhdGVkTGVnYWN5VExTIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29u
dGV4dDpuaWxdOworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6bGVnYWN5VExTU2VydmVyLnJl
cXVlc3QoKV07CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IF9uZWdvdGlhdGVkTGVnYWN5VExT
XSk7CisgICAgW2RlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKyAgICBFWFBF
Q1RfVFJVRShbd2ViVmlldyBfbmVnb3RpYXRlZExlZ2FjeVRMU10pOworCisgICAgW3dlYlZpZXcg
bG9hZFJlcXVlc3Q6bW9kZXJuVExTU2VydmVyLnJlcXVlc3QoKV07CisgICAgW2RlbGVnYXRlIHdh
aXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgX25l
Z290aWF0ZWRMZWdhY3lUTFNdKTsKKworICAgIFt3ZWJWaWV3IGdvQmFja107CisgICAgW29ic2Vy
dmVyIHdhaXRVbnRpbE5lZ290aWF0ZWRMZWdhY3lUTFNDaGFuZ2VkXTsKKyAgICBFWFBFQ1RfVFJV
RShbd2ViVmlldyBfbmVnb3RpYXRlZExlZ2FjeVRMU10pOworCisgICAgW3dlYlZpZXcgcmVtb3Zl
T2JzZXJ2ZXI6b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAIl9uZWdvdGlhdGVkTGVnYWN5VExT
Il07Cit9CisKK1RFU1QoVExTVmVyc2lvbiwgU3VicmVzb3VyY2UpCit7CisgICAgSFRUUFNlcnZl
ciBsZWdhY3lUTFNTZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyAiaGVsbG8iIH0gfQorICAgIH0s
IEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwc1dpdGhMZWdhY3lUTFMpOworCisgICAgSFRUUFNl
cnZlciBtb2Rlcm5UTFNTZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyBtYWtlU3RyaW5nKCI8c2Ny
aXB0PmZldGNoKCdodHRwczovLzEyNy4wLjAuMToiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGVn
YWN5VExTU2VydmVyLnBvcnQoKSksICIvJyx7bW9kZTonbm8tY29ycyd9KTwvc2NyaXB0PiIpIH0g
fQorICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CisgICAgCisgICAgYXV0byBb
d2ViVmlldywgZGVsZWdhdGVdID0gd2ViVmlld1dpdGhOYXZpZ2F0aW9uRGVsZWdhdGUoKTsKKyAg
ICBhdXRvIG9ic2VydmVyID0gYWRvcHROUyhbVExTT2JzZXJ2ZXIgbmV3XSk7CisgICAgW3dlYlZp
ZXcgYWRkT2JzZXJ2ZXI6b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAIl9uZWdvdGlhdGVkTGVn
YWN5VExTIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDpuaWxd
OworCisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IF9uZWdvdGlhdGVkTGVnYWN5VExTXSk7Cisg
ICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6bW9kZXJuVExTU2VydmVyLnJlcXVlc3QoKV07CisgICAg
d2hpbGUgKCFbd2ViVmlldyBfbmVnb3RpYXRlZExlZ2FjeVRMU10pCisgICAgICAgIFtvYnNlcnZl
ciB3YWl0VW50aWxOZWdvdGlhdGVkTGVnYWN5VExTQ2hhbmdlZF07CisKKyAgICBbd2ViVmlldyBy
ZW1vdmVPYnNlcnZlcjpvYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOkAiX25lZ290aWF0ZWRMZWdh
Y3lUTFMiXTsKK30KKworI2VuZGlmIC8vIEhBVkUoTkVUV09SS19GUkFNRVdPUkspICYmIEhBVkUo
VExTX1BST1RPQ09MX1ZFUlNJT05fVCkKIAogLy8gRklYTUU6IEFkZCBzb21lIHRlc3RzIGZvciBX
S1dlYlZpZXcuaGFzT25seVNlY3VyZUNvbnRlbnQKIApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQ
SS9jb2NvYS9IVFRQU2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9j
b2NvYS9IVFRQU2VydmVyLmgJKHJldmlzaW9uIDI1NTU4MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvSFRUUFNlcnZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw4IEBAIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIGNsYXNzIEhUVFBTZXJ2ZXIgewogcHVibGljOgogICAg
IHN0cnVjdCBIVFRQUmVzcG9uc2U7Ci0gICAgSFRUUFNlcnZlcihzdGQ6OmluaXRpYWxpemVyX2xp
c3Q8c3RkOjpwYWlyPFN0cmluZywgSFRUUFJlc3BvbnNlPj4pOworICAgIGVudW0gY2xhc3MgUHJv
dG9jb2wgOiB1aW50OF90IHsgSHR0cCwgSHR0cHMsIEh0dHBzV2l0aExlZ2FjeVRMUyB9OworICAg
IEhUVFBTZXJ2ZXIoc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxTdHJpbmcsIEhUVFBS
ZXNwb25zZT4+LCBQcm90b2NvbCA9IFByb3RvY29sOjpIdHRwKTsKICAgICB1aW50MTZfdCBwb3J0
KCkgY29uc3Q7CiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0KCkgY29uc3Q7CiAgICAgCkBAIC00
Niw2ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXNwb25kVG9SZXF1ZXN0cyhud19jb25u
ZWN0aW9uX3QpOwogICAgIAogICAgIFJldGFpblB0cjxud19saXN0ZW5lcl90PiBtX2xpc3RlbmVy
OworICAgIGNvbnN0IFByb3RvY29sIG1fcHJvdG9jb2w7CiAgICAgY29uc3QgSGFzaE1hcDxTdHJp
bmcsIEhUVFBSZXNwb25zZT4gbV9yZXF1ZXN0UmVzcG9uc2VNYXA7CiB9OwogCkBAIC03NCwzICs3
Niw1IEBAIHN0cnVjdCBIVFRQU2VydmVyOjpIVFRQUmVzcG9uc2UgewogfSAvLyBuYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSQogCiAjZW5kaWYgLy8gSEFWRShORVRXT1JLX0ZSQU1FV09SSykKKworUmV0
YWluUHRyPFNlY0lkZW50aXR5UmVmPiB0ZXN0SWRlbnRpdHkoKTsKSW5kZXg6IFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0JKHJldmlzaW9uIDI1NTU4MCkKKysrIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMzMsMTUg
KzMzLDI4IEBACiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotSFRUUFNlcnZlcjo6SFRU
UFNlcnZlcihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPFN0cmluZywgSFRUUFJlc3Bv
bnNlPj4gcmVzcG9uc2VzKQotICAgIDogbV9yZXF1ZXN0UmVzcG9uc2VNYXAoW10oc3RkOjppbml0
aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxTdHJpbmcsIEhUVFBTZXJ2ZXI6OkhUVFBSZXNwb25zZT4+
IGxpc3QpIHsKK0hUVFBTZXJ2ZXI6OkhUVFBTZXJ2ZXIoc3RkOjppbml0aWFsaXplcl9saXN0PHN0
ZDo6cGFpcjxTdHJpbmcsIEhUVFBSZXNwb25zZT4+IHJlc3BvbnNlcywgUHJvdG9jb2wgcHJvdG9j
b2wpCisgICAgOiBtX3Byb3RvY29sKHByb3RvY29sKQorICAgICwgbV9yZXF1ZXN0UmVzcG9uc2VN
YXAoW10oc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxTdHJpbmcsIEhUVFBTZXJ2ZXI6
OkhUVFBSZXNwb25zZT4+IGxpc3QpIHsKICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIEhUVFBTZXJ2
ZXI6OkhUVFBSZXNwb25zZT4gbWFwOwogICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBsaXN0KQog
ICAgICAgICAgICAgbWFwLmFkZChwYWlyLmZpcnN0LCBwYWlyLnNlY29uZCk7CiAgICAgICAgIHJl
dHVybiBtYXA7CiAgICAgfShyZXNwb25zZXMpKQogewotICAgIGF1dG8gcGFyYW1ldGVycyA9IGFk
b3B0TlMobndfcGFyYW1ldGVyc19jcmVhdGVfc2VjdXJlX3RjcChOV19QQVJBTUVURVJTX0RJU0FC
TEVfUFJPVE9DT0wsIE5XX1BBUkFNRVRFUlNfREVGQVVMVF9DT05GSUdVUkFUSU9OKSk7CisgICAg
YXV0byBjb25maWd1cmVUTFMgPSBwcm90b2NvbCA9PSBQcm90b2NvbDo6SHR0cCA/IE5XX1BBUkFN
RVRFUlNfRElTQUJMRV9QUk9UT0NPTCA6IF4obndfcHJvdG9jb2xfb3B0aW9uc190IHByb3RvY29s
T3B0aW9ucykgeworI2lmIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkKKyAgICAgICAgYXV0
byBvcHRpb25zID0gYWRvcHROUyhud190bHNfY29weV9zZWNfcHJvdG9jb2xfb3B0aW9ucyhwcm90
b2NvbE9wdGlvbnMpKTsKKyAgICAgICAgYXV0byBpZGVudGl0eSA9IGFkb3B0TlMoc2VjX2lkZW50
aXR5X2NyZWF0ZSh0ZXN0SWRlbnRpdHkoKS5nZXQoKSkpOworICAgICAgICBzZWNfcHJvdG9jb2xf
b3B0aW9uc19zZXRfbG9jYWxfaWRlbnRpdHkob3B0aW9ucy5nZXQoKSwgaWRlbnRpdHkuZ2V0KCkp
OworICAgICAgICBpZiAocHJvdG9jb2wgPT0gUHJvdG9jb2w6Okh0dHBzV2l0aExlZ2FjeVRMUykK
KyAgICAgICAgICAgIHNlY19wcm90b2NvbF9vcHRpb25zX3NldF9tYXhfdGxzX3Byb3RvY29sX3Zl
cnNpb24ob3B0aW9ucy5nZXQoKSwgdGxzX3Byb3RvY29sX3ZlcnNpb25fVExTdjEwKTsKKyNlbHNl
CisgICAgICAgIFVOVVNFRF9QQVJBTShwcm90b2NvbE9wdGlvbnMpOworICAgICAgICBBU1NFUlQo
cHJvdG9jb2wgIT0gUHJvdG9jb2w6Okh0dHBzV2l0aExlZ2FjeVRMUyk7CisjZW5kaWYKKyAgICB9
OworICAgIGF1dG8gcGFyYW1ldGVycyA9IGFkb3B0TlMobndfcGFyYW1ldGVyc19jcmVhdGVfc2Vj
dXJlX3RjcChjb25maWd1cmVUTFMsIE5XX1BBUkFNRVRFUlNfREVGQVVMVF9DT05GSUdVUkFUSU9O
KSk7CiAgICAgbV9saXN0ZW5lciA9IGFkb3B0TlMobndfbGlzdGVuZXJfY3JlYXRlKHBhcmFtZXRl
cnMuZ2V0KCkpKTsKICAgICBud19saXN0ZW5lcl9zZXRfcXVldWUobV9saXN0ZW5lci5nZXQoKSwg
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7CiAgICAgbndfbGlzdGVuZXJfc2V0X25ld19jb25u
ZWN0aW9uX2hhbmRsZXIobV9saXN0ZW5lci5nZXQoKSwgXihud19jb25uZWN0aW9uX3QgY29ubmVj
dGlvbikgewpAQCAtMTI3LDcgKzE0MCwxNyBAQCB1aW50MTZfdCBIVFRQU2VydmVyOjpwb3J0KCkg
Y29uc3QKIAogTlNVUkxSZXF1ZXN0ICpIVFRQU2VydmVyOjpyZXF1ZXN0KCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHA6Ly8xMjcuMC4wLjE6JWQvIiwgcG9y
dCgpXV1dOworICAgIE5TU3RyaW5nICpmb3JtYXQ7CisgICAgc3dpdGNoIChtX3Byb3RvY29sKSB7
CisgICAgY2FzZSBQcm90b2NvbDo6SHR0cDoKKyAgICAgICAgZm9ybWF0ID0gQCJodHRwOi8vMTI3
LjAuMC4xOiVkLyI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHJvdG9jb2w6Okh0dHBzOgor
ICAgIGNhc2UgUHJvdG9jb2w6Okh0dHBzV2l0aExlZ2FjeVRMUzoKKyAgICAgICAgZm9ybWF0ID0g
QCJodHRwczovLzEyNy4wLjAuMTolZC8iOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0
dXJuIFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6Zm9ybWF0LCBwb3J0KCldXV07CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389734</attachid>
            <date>2020-02-04 16:18:11 -0800</date>
            <delta_ts>2020-02-04 16:37:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207207-20200204161810.patch</filename>
            <type>text/plain</type>
            <size>54567</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NTcwOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDIwLTAyLTA0ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRml4IHJhY2Ug
Y29uZGl0aW9uIGZvciBXS1dlYlZpZXcuX25lZ290aWF0ZWRMZWdhY3lUTFMgd2hlbiBsb2FkaW5n
IG1haW4gcmVzb3VvcmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDcyMDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmluY2x1ZGVDZXJ0aWZpY2F0ZUlu
Zm8gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJh
c2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjp1c2VkTGVnYWN5
VExTIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmRlY29k
ZSk6CisKIDIwMjAtMDItMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBGaXggTWFjIENNYWtlIGJ1aWxkCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNw
cAkocmV2aXNpb24gMjU1NzA4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MSwxMSArMjYxLDEy
IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldFR5cGUoVHlwZSAKICAgICBtX3R5cGUg
PSB0eXBlOwogfQogCi12b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjppbmNsdWRlQ2VydGlmaWNh
dGVJbmZvKCkgY29uc3QKK3ZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmluY2x1ZGVDZXJ0aWZp
Y2F0ZUluZm8oVXNlZExlZ2FjeVRMUyB1c2VkTGVnYWN5VExTKSBjb25zdAogewogICAgIGlmICht
X2NlcnRpZmljYXRlSW5mbykKICAgICAgICAgcmV0dXJuOwogICAgIG1fY2VydGlmaWNhdGVJbmZv
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgUmVzb3VyY2VSZXNwb25zZSo+KHRoaXMpLT5wbGF0Zm9ybUNl
cnRpZmljYXRlSW5mbygpOworICAgIG1fdXNlZExlZ2FjeVRMUyA9IHVzZWRMZWdhY3lUTFM7CiB9
CiAKIFN0cmluZyBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25z
dApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNl
QmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXNwb25zZUJhc2UuaAkocmV2aXNpb24gMjU1NzA4KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MSw2ICs0MSw4IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiAKIGJvb2wgaXNTY3JpcHRB
bGxvd2VkQnlOb3NuaWZmKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIAorZW51bSBjbGFzcyBV
c2VkTGVnYWN5VExTIDogYm9vbCB7IE5vLCBZZXMgfTsKKwogLy8gRG8gbm90IHVzZSB0aGlzIGNs
YXNzIGRpcmVjdGx5LCB1c2UgdGhlIGNsYXNzIFJlc291cmNlUmVzcG9uc2UgaW5zdGVhZAogY2xh
c3MgUmVzb3VyY2VSZXNwb25zZUJhc2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpA
QCAtMTI3LDggKzEyOSw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3Vn
Z2VzdGVkRmlsZW5hbWUoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5n
IHNhbml0aXplU3VnZ2VzdGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJik7CiAKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8oKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8oVXNlZExlZ2FjeVRMUyA9IFVzZWRM
ZWdhY3lUTFM6Ok5vKSBjb25zdDsKICAgICBjb25zdCBPcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+
JiBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdCB7IHJldHVybiBtX2NlcnRpZmljYXRlSW5mbzsgfTsK
KyAgICBib29sIHVzZWRMZWdhY3lUTFMoKSBjb25zdCB7IHJldHVybiBtX3VzZWRMZWdhY3lUTFMg
PT0gVXNlZExlZ2FjeVRMUzo6WWVzOyB9CiAgICAgCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIHJl
dHVybiBwYXJzZWQgdmFsdWVzIG9mIHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlIGhlYWRlcnMu
CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjYWNoZUNvbnRyb2xDb250YWluc05vQ2FjaGUoKSBj
b25zdDsKQEAgLTI0Niw3ICsyNDksOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1JhbmdlUmVx
dWVzdGVkIHsgZmFsc2UgfTsKIAogcHJvdGVjdGVkOgotICAgIGludCBtX2h0dHBTdGF0dXNDb2Rl
IHsgMCB9OworICAgIHNob3J0IG1faHR0cFN0YXR1c0NvZGUgeyAwIH07CisgICAgbXV0YWJsZSBV
c2VkTGVnYWN5VExTIG1fdXNlZExlZ2FjeVRMUyB7IFVzZWRMZWdhY3lUTFM6Ok5vIH07CiB9Owog
CiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGEsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIGIpIHsgcmV0dXJuIFJlc291cmNlUmVzcG9uc2VCYXNlOjpjb21w
YXJlKGEsIGIpOyB9CkBAIC0yNzksNiArMjgzLDcgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFz
ZTo6ZW5jb2RlKEVuY29kZQogICAgIGVuY29kZXIuZW5jb2RlRW51bShtX3R5cGUpOwogICAgIGVu
Y29kZXIuZW5jb2RlRW51bShtX3RhaW50aW5nKTsKICAgICBlbmNvZGVyIDw8IG1faXNSZWRpcmVj
dGVkOworICAgIGVuY29kZXIgPDwgbV91c2VkTGVnYWN5VExTOwogICAgIGVuY29kZXIgPDwgbV9p
c1JhbmdlUmVxdWVzdGVkOwogfQogCkBAIC0zMjgsNiArMzMzLDEyIEBAIGJvb2wgUmVzb3VyY2VS
ZXNwb25zZUJhc2U6OmRlY29kZShEZWNvZGUKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJl
c3BvbnNlLm1faXNSZWRpcmVjdGVkID0gaXNSZWRpcmVjdGVkOwogCisgICAgT3B0aW9uYWw8VXNl
ZExlZ2FjeVRMUz4gdXNlZExlZ2FjeVRMUzsKKyAgICBkZWNvZGVyID4+IHVzZWRMZWdhY3lUTFM7
CisgICAgaWYgKCF1c2VkTGVnYWN5VExTKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmVz
cG9uc2UubV91c2VkTGVnYWN5VExTID0gKnVzZWRMZWdhY3lUTFM7CisKICAgICBib29sIGlzUmFu
Z2VSZXF1ZXN0ZWQgPSBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzUmFuZ2VSZXF1
ZXN0ZWQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjU1
NzA5KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSw3MCBAQAorMjAyMC0wMi0wNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgorCisgICAgICAgIEZpeCByYWNlIGNvbmRpdGlvbiBmb3IgV0tXZWJWaWV3Ll9uZWdv
dGlhdGVkTGVnYWN5VExTIHdoZW4gbG9hZGluZyBtYWluIHJlc291b3JjZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3MjA3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gUGFnZUxvYWRTdGF0ZTo6ZGlk
Q29tbWl0TG9hZCwgSSB3YXMgcmVzZXR0aW5nIHRoZSB2YWx1ZSBvZiBfbmVnb3RpYXRlZExlZ2Fj
eVRMUyB0byBmYWxzZS4KKyAgICAgICAgVGhhdCBjcmVhdGVkIGEgcmFjZSBjb25kaXRpb24gd2hl
biBsb2FkaW5nIHRoZSBtYWluIHJlc291cmNlIGJlY2F1c2UgdGhlIE5ldHdvcmtQcm9jZXNzIHdv
dWxkCisgICAgICAgIG1lc3NhZ2UgdGhlIFVJUHJvY2VzcyBzZXR0aW5nIF9uZWdvdGlhdGVkTGVn
YWN5VExTIHRvIGZhbHNlLCB3aGlsZSB0aGUgTmV0d29ya1Byb2Nlc3Mgd291bGQKKyAgICAgICAg
bWVzc2FnZSB0aGUgV2ViUHJvY2VzcyB3aGljaCB3b3VsZCBtZXNzYWdlIHRoZSBVSVByb2Nlc3Mg
dG8gY2FsbCBQYWdlTG9hZFN0YXRlOjpkaWRDb21taXRMb2FkCisgICAgICAgIHdoaWNoIHdvdWxk
IHJlc2V0IGl0IHRvIGZhbHNlLiAgTm93IGl0IHJlc2V0cyBpdCB0byB0aGUgY29ycmVjdCB2YWx1
ZSwgd2hhdGV2ZXIgaXQgaXMuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gbWFpbnRhaW4gYmluYXJ5
IGNvbXBhdGliaWxpdHkgd2l0aCBleGlzdGluZyBkaXNrIGNhY2hlcywgSSBidW5kbGUgdHdvIGJv
b2xlYW5zIHRvZ2V0aGVyCisgICAgICAgIHdoZW4gZW5jb2RpbmcuICBUaGlzIHJlc3VsdHMgaW4g
ZXhpc3RpbmcgZGlzayBjYWNoZXMgc2F5aW5nIHRoZXkgbG9hZGVkIG5vdGhpbmcgb3ZlciBsZWdh
Y3kgVExTLAorICAgICAgICB3aGljaCBpcyBzb21ld2hhdCBjb3JyZWN0IGJlY2F1c2UgVExTIDEu
MCBhbmQgMS4xIHdlcmUgbm90IGRlcHJlY2F0ZWQgd2hlbiB0aGUgcmVzb3VyY2VzIHdlcmUgZmV0
Y2hlZC4KKyAgICAgICAgR29pbmcgZm9yd2FyZCwgdGhlIGJpdCB3aWxsIGJlIHNldCBhbmQgdGhl
IGRpc2sgY2FjaGUgZW50cmllcyB3aWxsIHN0b3JlIHdoZXRoZXIgdGhleSB3ZXJlIGxvYWRlZAor
ICAgICAgICBvdmVyIGxlZ2FjeSBUTFMuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gbm90IGluY3Jl
YXNlIHRoZSBtZW1vcnkgZm9vdHByaW50IG9mIFJlc291cmNlUmVzcG9uc2UsIEkgY2hhbmdlZCBt
X2h0dHBTdGF0dXNDb2RlIGZyb20KKyAgICAgICAgYW4gaW50IHRvIGEgc2hvcnQuICBJdCBqdXN0
IG5lZWRzIHRvIGJlIGFibGUgdG8gY292ZXIgdGhlIHZhbHVlcyAwLTYwMCBvciBzbywgd2hpY2gg
cmVhbGx5IG9ubHkgbmVlZHMgMTAgYml0cy4KKworICAgICAgICBDb3ZlcmVkIGJ5IG5ldyBBUEkg
dGVzdHMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENo
ZWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6
OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NP
UlNQcmVmbGlnaHRDaGVja2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Rh
dGFUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6Om5lZ290aWF0ZWRM
ZWdhY3lUTFMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtEYXRhVGFzay5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDbGllbnQ6Om5l
Z290aWF0ZWRMZWdhY3lUTFMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0
YVRhc2tCbG9iOjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6Om5vdGlm
eURpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjp0aHJv
dHRsZURlbGF5Q29tcGxldGVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6Om5lZ290
aWF0ZWRMZWdhY3lUTFMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpQaW5nTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9QaW5nTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtEYXRhVGFza0NvY29hLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0Nv
Y29hOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxl
Z2F0ZSBVUkxTZXNzaW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVSZXNwb25zZTpjb21wbGV0aW9uSGFu
ZGxlcjpdKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1
cmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDdXJsOjppbnZva2VEaWRS
ZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0Rh
dGFUYXNrU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmRp
c3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUxvYWRT
dGF0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VMb2FkU3RhdGU6OmRpZENvbW1pdExvYWQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9u
YWxQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNz
L1Byb3Zpc2lvbmFsUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQ
YWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJh
bWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKToKKwogMjAyMC0wMi0w
NCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAg
IEZpeCBNYWMgQ01ha2UgYnVpbGQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAJKHJldmlz
aW9uIDI1NTcwOCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQ
cmVmbGlnaHRDaGVja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHZv
aWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWMKICAgICBtX25ldHdvcmtQcm9j
ZXNzLT5hdXRoZW50aWNhdGlvbk1hbmFnZXIoKS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UobV9wYXJhbWV0ZXJzLnNlc3Npb25JRCwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlE
LCBtX3BhcmFtZXRlcnMudG9wT3JpZ2luID8gJm1fcGFyYW1ldGVycy50b3BPcmlnaW4tPmRhdGEo
KSA6IG51bGxwdHIsIGNoYWxsZW5nZSwgbmVnb3RpYXRlZExlZ2FjeVRMUywgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwg
UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3
b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2UiKTsKIApJbmRleDogU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tl
ci5oCShyZXZpc2lvbiAyNTU3MDgpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlv
bihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2
ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVk
TGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNl
Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25z
ZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdp
dGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0
d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0
b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFz
ay5jcHAJKHJldmlzaW9uIDI1NTcwOCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0RhdGFUYXNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcsNyArOTcsNyBAQCB2b2lk
IE5ldHdvcmtEYXRhVGFzazo6c2NoZWR1bGVGYWlsdXJlKEZhCiAgICAgbV9mYWlsdXJlVGltZXIu
c3RhcnRPbmVTaG90KDBfcyk7CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZl
UmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNwb25zZUNvbXBsZXRpb25I
YW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtEYXRhVGFzazo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgTmVnb3RpYXRlZExlZ2Fj
eVRMUyBuZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKHJlc3BvbnNlLmlzSFRUUDA5KCkpIHsKICAgICAg
ICAgYXV0byB1cmwgPSByZXNwb25zZS51cmwoKTsKQEAgLTExMSwxNyArMTExLDExIEBAIHZvaWQg
TmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UKICAgICAgICAgfQogICAgIH0KICAg
ICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoV1RG
TW92ZShyZXNwb25zZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgbV9j
bGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgbmVnb3RpYXRlZExl
Z2FjeVRMUywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIGVsc2UKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUpOwogfQogCi12b2lkIE5ldHdv
cmtEYXRhVGFzazo6bmVnb3RpYXRlZExlZ2FjeVRMUygpIGNvbnN0Ci17Ci0gICAgaWYgKG1fY2xp
ZW50KQotICAgICAgICBtX2NsaWVudC0+bmVnb3RpYXRlZExlZ2FjeVRMUygpOwotfQotCiBib29s
IE5ldHdvcmtEYXRhVGFzazo6c2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbV9jbGllbnQgPyBtX2NsaWVudC0+c2hvdWxkQ2FwdHVyZUV4
dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkgOiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAkocmV2aXNpb24gMjU1NzA4KQorKysg
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAkod29ya2luZyBj
b3B5KQpAQCAtNjIsNyArNjIsNyBAQCBjbGFzcyBOZXR3b3JrRGF0YVRhc2tDbGllbnQgewogcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVj
dENvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNo
YWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVn
YWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3Bv
bnNlQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExT
LCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxC
eXRlc0V4cGVjdGVkVG9TZW5kKSA9IDA7CkBAIC03MCw3ICs3MCw2IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgY2Fubm90U2hvd1VSTCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2FzQmxv
Y2tlZEJ5UmVzdHJpY3Rpb25zKCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIG5lZ290aWF0ZWRM
ZWdhY3lUTFMoKSBjb25zdCB7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJh
TmV0d29ya0xvYWRNZXRyaWNzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZvaWQg
ZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3Ip
CkBAIC05Miw4ICs5MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlQW5kQ2FuY2VsKCkgPSAwOwogCi0gICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25z
ZUNvbXBsZXRpb25IYW5kbGVyJiYpOwotICAgIHZvaWQgbmVnb3RpYXRlZExlZ2FjeVRMUygpIGNv
bnN0OworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKTsK
ICAgICBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcygpIGNvbnN0Owog
CiAgICAgZW51bSBjbGFzcyBTdGF0ZSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAJKHJldmlzaW9uIDI1NTcwOCkK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI5MCw3ICsyOTAsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0Js
b2I6OmRpc3BhdGNoRGlkUmVjCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGRpZFJlY2Vp
dmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZN
b3ZlKHByb3RlY3RlZFRoaXMpLCBlcnJvckNvZGVdKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24p
IHsKKyAgICBkaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSksIE5lZ290aWF0ZWRM
ZWdhY3lUTFM6Ok5vLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhp
cyksIGVycm9yQ29kZV0oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgewogICAgICAgICBMT0co
TmV0d29ya1Nlc3Npb24sICIlcCAtIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRpZFJlY2VpdmVSZXNw
b25zZSBjb21wbGV0aW9uSGFuZGxlciAoJXUpIiwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHBvbGljeUFjdGlvbikpOwogCiAgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDYW5jZWxp
bmcgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6Q29tcGxldGVkKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAkocmV2aXNpb24gMjU1NzA4KQorKysg
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIwNiwxMiArMjA2LDcgQEAgdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZUNoYWxs
ZW5nZShBdQogICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5hdXRoZW50aWNhdGlvbk1hbmFnZXIo
KS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UobV90YXNrLT5zZXNzaW9uSUQoKSwg
bV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELCBtX3BhcmFtZXRlcnMudG9wT3JpZ2luID8gJm1f
cGFyYW1ldGVycy50b3BPcmlnaW4tPmRhdGEoKSA6IG51bGxwdHIsIGNoYWxsZW5nZSwgbmVnb3Rp
YXRlZExlZ2FjeVRMUywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5l
dHdvcmtMb2FkOjpuZWdvdGlhdGVkTGVnYWN5VExTKCkgY29uc3QKLXsKLSAgICBtX25ldHdvcmtQ
cm9jZXNzLT5hdXRoZW50aWNhdGlvbk1hbmFnZXIoKS5uZWdvdGlhdGVkTGVnYWN5VExTKG1fcGFy
YW1ldGVycy53ZWJQYWdlUHJveHlJRCk7Ci19Ci0KLXZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2Vp
dmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlv
bkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2Vp
dmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0ZWRMZWdhY3lU
TFMgbmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgQVNT
RVJUKCFtX3Rocm90dGxlKTsKQEAgLTIyNiwxNiArMjIxLDE5IEBAIHZvaWQgTmV0d29ya0xvYWQ6
OmRpZFJlY2VpdmVSZXNwb25zZShSZXMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG5v
dGlmeURpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworICAgIGlmIChuZWdvdGlhdGVkTGVnYWN5VExTID09IE5lZ290aWF0ZWRM
ZWdhY3lUTFM6OlllcykKKyAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+YXV0aGVudGljYXRpb25N
YW5hZ2VyKCkubmVnb3RpYXRlZExlZ2FjeVRMUyhtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQp
OworICAgIAorICAgIG5vdGlmeURpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwg
bmVnb3RpYXRlZExlZ2FjeVRMUywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12
b2lkIE5ldHdvcmtMb2FkOjpub3RpZnlEaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25z
ZSYmIHJlc3BvbnNlLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIE5ldHdvcmtMb2FkOjpub3RpZnlEaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VS
ZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVkTGVnYWN5VExTIG5lZ290aWF0ZWRMZWdhY3lU
TFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgcmVzcG9uc2Uuc2V0U291cmNlKFJl
c291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yayk7CiAgICAgaWYgKG1fcGFyYW1ldGVycy5u
ZWVkc0NlcnRpZmljYXRlSW5mbykKLSAgICAgICAgcmVzcG9uc2UuaW5jbHVkZUNlcnRpZmljYXRl
SW5mbygpOworICAgICAgICByZXNwb25zZS5pbmNsdWRlQ2VydGlmaWNhdGVJbmZvKG5lZ290aWF0
ZWRMZWdhY3lUTFMgPT0gTmVnb3RpYXRlZExlZ2FjeVRMUzo6WWVzID8gVXNlZExlZ2FjeVRMUzo6
WWVzIDogVXNlZExlZ2FjeVRMUzo6Tm8pOwogCiAgICAgbV9jbGllbnQuZ2V0KCkuZGlkUmVjZWl2
ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiB9CkBAIC0yNjUsNyArMjYzLDcgQEAgdm9pZCBOZXR3b3JrTG9hZDo6dGhyb3R0bGVEZWxheUNv
bXBsZXRlZAogCiAgICAgYXV0byB0aHJvdHRsZSA9IFdURk1vdmUobV90aHJvdHRsZSk7CiAKLSAg
ICBub3RpZnlEaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZSh0aHJvdHRsZS0+cmVzcG9uc2UpLCBX
VEZNb3ZlKHRocm90dGxlLT5yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgbm90aWZ5
RGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUodGhyb3R0bGUtPnJlc3BvbnNlKSwgTmVnb3RpYXRl
ZExlZ2FjeVRMUzo6Tm8sIFdURk1vdmUodGhyb3R0bGUtPnJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrTG9hZDo6ZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxC
eXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgJKHJldmlzaW9uIDI1NTcwOCkK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAkod29ya2luZyBj
b3B5KQpAQCAtNzQsMTYgKzc0LDE1IEBAIHByaXZhdGU6CiAgICAgLy8gTmV0d29ya0RhdGFUYXNr
Q2xpZW50CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBs
ZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJD
b3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFs
bGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXImJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5k
bGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNz
JikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwg
dWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKICAgICB2b2lkIHdhc0Js
b2NrZWQoKSBmaW5hbDsKICAgICB2b2lkIGNhbm5vdFNob3dVUkwoKSBmaW5hbDsKICAgICB2b2lk
IHdhc0Jsb2NrZWRCeVJlc3RyaWN0aW9ucygpIGZpbmFsOwotICAgIHZvaWQgbmVnb3RpYXRlZExl
Z2FjeVRMUygpIGNvbnN0IGZpbmFsOwogCi0gICAgdm9pZCBub3RpZnlEaWRSZWNlaXZlUmVzcG9u
c2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVy
JiYpOworICAgIHZvaWQgbm90aWZ5RGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxl
ciYmKTsKICAgICB2b2lkIHRocm90dGxlRGVsYXlDb21wbGV0ZWQoKTsKIAogICAgIHN0ZDo6cmVm
ZXJlbmNlX3dyYXBwZXI8TmV0d29ya0xvYWRDbGllbnQ+IG1fY2xpZW50OwpJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5o
CShyZXZpc2lvbiAyNTU3MDgpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw4IEBAIGNsYXNz
IE5ldHdvcmtMb2FkQ2hlY2tlcjsKIGNsYXNzIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s7CiBjbGFz
cyBXZWJTV1NlcnZlckNvbm5lY3Rpb247CiAKK2VudW0gY2xhc3MgTmVnb3RpYXRlZExlZ2FjeVRM
UyA6IGJvb2w7CisKIHN0cnVjdCBSZXNvdXJjZUxvYWRJbmZvOwogCiBuYW1lc3BhY2UgTmV0d29y
a0NhY2hlIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3Bw
CShyZXZpc2lvbiAyNTU3MDgpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdM
b2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQgUGluZ0xvYWQ6
OmRpZFJlY2VpdmVDaGFsbGVuZ2UoQXV0aGUKICAgICBkaWRGaW5pc2goUmVzb3VyY2VFcnJvciB7
IFN0cmluZygpLCAwLCBjdXJyZW50VVJMKCksICJGYWlsZWQgSFRUUCBhdXRoZW50aWNhdGlvbiJf
cywgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9KTsKIH0KIAotdm9pZCBQaW5n
TG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVz
cG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBQaW5nTG9h
ZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgTmVnb3Rp
YXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZSAt
IGh0dHBTdGF0dXNDb2RlOiAlZCIsIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpOwogICAgIGF1
dG8gd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCShyZXZpc2lvbiAyNTU3MDgpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJl
Y3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVu
Z2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRM
UywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRp
b25IYW5kbGVyJiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0
aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3Io
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2Fk
TWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRl
c1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkgZmluYWw7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVN0b3JhZ2UuaAkocmV2aXNpb24gMjU1NzA4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEw
Nyw3ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IGFwcHJveGltYXRlU2l6ZSgpIGNvbnN0
OwogCiAgICAgLy8gSW5jcmVtZW50aW5nIHRoaXMgbnVtYmVyIHdpbGwgZGVsZXRlIGFsbCBleGlz
dGluZyBjYWNoZSBjb250ZW50IGZvciBldmVyeW9uZS4gRG8geW91IHJlYWxseSBuZWVkIHRvIGRv
IGl0PwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB2ZXJzaW9uID0gMTU7CisgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIHZlcnNpb24gPSAxNjsKIAogICAgIFN0cmluZyBiYXNlUGF0aElzb2xh
dGVkQ29weSgpIGNvbnN0OwogICAgIFN0cmluZyB2ZXJzaW9uUGF0aCgpIGNvbnN0OwpJbmRleDog
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EuaAkocmV2aXNpb24gMjU1NzA4KQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCSh3b3JraW5nIGNvcHkpCkBA
IC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRv
dGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpOwogICAgIHZv
aWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYm
LCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKTsKICAg
ICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlv
bkhhbmRsZXImJik7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5k
bGVyJiYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJik7CiAKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29t
cGxldGlvbkhhbmRsZXImJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0JKHJldmlzaW9uIDI1
NTcwOCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFU
YXNrQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTM3MywxMCArMzczLDEwIEBAIHZvaWQgTmV0
d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVEYXQKICAgICAgICAgbV9jbGllbnQtPmRpZFJl
Y2VpdmVEYXRhKFdURk1vdmUoZGF0YSkpOwogfQogCi12b2lkIE5ldHdvcmtEYXRhVGFza0NvY29h
OjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNl
LCBXZWJLaXQ6OlJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0ZWRMZWdhY3lUTFMgbmVnb3RpYXRl
ZExlZ2FjeVRMUywgV2ViS2l0OjpSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgRU1JVF9TSUdOUE9TVChtX3Rhc2ssICJyZWNlaXZlZCByZXNwb25z
ZSBoZWFkZXJzIik7Ci0gICAgTmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoV1RG
TW92ZShyZXNwb25zZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBOZXR3b3Jr
RGF0YVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgbmVnb3RpYXRl
ZExlZ2FjeVRMUywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdv
cmtEYXRhVGFza0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVy
KQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQkocmV2aXNpb24gMjU1NzA4KQorKysgU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC04MTgsMjQgKzgxOCwyMiBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vz
c2lvbiAqKXNlc3NpCiAgICAgaWYgKGF1dG8qIG5ldHdvcmtEYXRhVGFzayA9IFtzZWxmIGV4aXN0
aW5nVGFzazpkYXRhVGFza10pIHsKICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
IAotICAgICAgICBib29sIG5lZ290aWF0ZWRMZWdhY3lUTFMgPSBmYWxzZTsKKyAgICAgICAgTmVn
b3RpYXRlZExlZ2FjeVRMUyBuZWdvdGlhdGVkTGVnYWN5VExTID0gTmVnb3RpYXRlZExlZ2FjeVRM
Uzo6Tm87CiAjaWYgSEFWRShUTFNfUFJPVE9DT0xfVkVSU0lPTl9UKQogICAgICAgICBOU1VSTFNl
c3Npb25UYXNrVHJhbnNhY3Rpb25NZXRyaWNzICptZXRyaWNzID0gZGF0YVRhc2suX2luY29tcGxl
dGVUYXNrTWV0cmljcy50cmFuc2FjdGlvbk1ldHJpY3MubGFzdE9iamVjdDsKICAgICAgICAgYXV0
byB0bHNWZXJzaW9uID0gKHRsc19wcm90b2NvbF92ZXJzaW9uX3QpbWV0cmljcy5uZWdvdGlhdGVk
VExTUHJvdG9jb2xWZXJzaW9uLnVuc2lnbmVkU2hvcnRWYWx1ZTsKICAgICAgICAgaWYgKHRsc1Zl
cnNpb24gPT0gdGxzX3Byb3RvY29sX3ZlcnNpb25fVExTdjEwIHx8IHRsc1ZlcnNpb24gPT0gdGxz
X3Byb3RvY29sX3ZlcnNpb25fVExTdjExKQotICAgICAgICAgICAgbmVnb3RpYXRlZExlZ2FjeVRM
UyA9IHRydWU7CisgICAgICAgICAgICBuZWdvdGlhdGVkTGVnYWN5VExTID0gTmVnb3RpYXRlZExl
Z2FjeVRMUzo6WWVzOwogICAgICAgICBVTlVTRURfUEFSQU0obWV0cmljcyk7CiAjZWxzZSAvLyBX
ZSBkbyBub3QgbmVlZCB0byBjaGVjayBfVExTTmVnb3RpYXRlZFByb3RvY29sVmVyc2lvbiBpZiB3
ZSBoYXZlIG1ldHJpY3MubmVnb3RpYXRlZFRMU1Byb3RvY29sVmVyc2lvbiBiZWNhdXNlIGl0IHdv
cmtzIGF0IHJlc3BvbnNlIHRpbWUgZXZlbiBiZWZvcmUgcmRhcjovL3Byb2JsZW0vNTY1MjI2MDEK
ICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgaWYg
KFtkYXRhVGFzayByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9UTFNOZWdvdGlhdGVkUHJv
dG9jb2xWZXJzaW9uKV0pIHsKICAgICAgICAgICAgIFNTTFByb3RvY29sIHRsc1ZlcnNpb24gPSBb
ZGF0YVRhc2sgX1RMU05lZ290aWF0ZWRQcm90b2NvbFZlcnNpb25dOwogICAgICAgICAgICAgaWYg
KHRsc1ZlcnNpb24gPT0ga1RMU1Byb3RvY29sMTEgfHwgdGxzVmVyc2lvbiA9PSBrVExTUHJvdG9j
b2wxKQotICAgICAgICAgICAgICAgIG5lZ290aWF0ZWRMZWdhY3lUTFMgPSB0cnVlOworICAgICAg
ICAgICAgICAgIG5lZ290aWF0ZWRMZWdhY3lUTFMgPSBOZWdvdGlhdGVkTGVnYWN5VExTOjpZZXM7
CiAgICAgICAgIH0KICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAj
ZW5kaWYKLSAgICAgICAgaWYgKG5lZ290aWF0ZWRMZWdhY3lUTFMpCi0gICAgICAgICAgICBuZXR3
b3JrRGF0YVRhc2stPm5lZ290aWF0ZWRMZWdhY3lUTFMoKTsKICAgICAgICAgCiAgICAgICAgIC8v
IEF2b2lkIE1JTUUgdHlwZSBzbmlmZmluZyBpZiB0aGUgcmVzcG9uc2UgY29tZXMgYmFjayBhcyAz
MDQgTm90IE1vZGlmaWVkLgogICAgICAgICBpbnQgc3RhdHVzQ29kZSA9IFtyZXNwb25zZSBpc0tp
bmRPZkNsYXNzOk5TSFRUUFVSTFJlc3BvbnNlLmNsYXNzXSA/IFsoTlNIVFRQVVJMUmVzcG9uc2Ug
KilyZXNwb25zZSBzdGF0dXNDb2RlXSA6IDA7CkBAIC04NTQsNyArODUyLDcgQEAgLSAodm9pZClV
UkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaQogICAgICAgICBjb3B5VGltaW5nRGF0YShb
ZGF0YVRhc2sgX3RpbWluZ0RhdGFdLCByZXNvdXJjZVJlc3BvbnNlLmRlcHJlY2F0ZWROZXR3b3Jr
TG9hZE1ldHJpY3MoKSk7CiAKICAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBC
bG9ja19jb3B5KGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICAgICAgbmV0d29ya0RhdGFUYXNrLT5k
aWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShyZXNvdXJjZVJlc3BvbnNlKSwgW2NvbXBsZXRpb25I
YW5kbGVyQ29weSwgdGFza0lkZW50aWZpZXJdKFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lB
Y3Rpb24pIHsKKyAgICAgICAgbmV0d29ya0RhdGFUYXNrLT5kaWRSZWNlaXZlUmVzcG9uc2UoV1RG
TW92ZShyZXNvdXJjZVJlc3BvbnNlKSwgbmVnb3RpYXRlZExlZ2FjeVRMUywgW2NvbXBsZXRpb25I
YW5kbGVyQ29weSwgdGFza0lkZW50aWZpZXJdKFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lB
Y3Rpb24pIHsKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgICAgICAgICBMT0coTmV0d29ya1Nlc3Np
b24sICIlbGx1IGRpZFJlY2VpdmVSZXNwb25zZSBjb21wbGV0aW9uSGFuZGxlciAoJWQpIiwgdGFz
a0lkZW50aWZpZXIsIHBvbGljeUFjdGlvbik7CiAjZWxzZQpJbmRleDogU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNw
cAkocmV2aXNpb24gMjU1NzA4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJs
L05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjQsNyArMjI0LDcg
QEAgYm9vbCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpzaG91bGRSZWRpcmVjdAogCiB2b2lkIE5ldHdv
cmtEYXRhVGFza0N1cmw6Omludm9rZURpZFJlY2VpdmVSZXNwb25zZSgpCiB7Ci0gICAgZGlkUmVj
ZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UobV9yZXNwb25zZSksIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIHsKKyAg
ICBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZShtX3Jlc3BvbnNlKSwgTmVnb3Rp
YXRlZExlZ2FjeVRMUzo6Tm8sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyld
KFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIHsKICAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3Rh
dGU6OkNhbmNlbGluZyB8fCBtX3N0YXRlID09IFN0YXRlOjpDb21wbGV0ZWQpCiAgICAgICAgICAg
ICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3
b3JrRGF0YVRhc2tTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAJKHJldmlzaW9uIDI1NTcwOCkKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzc4LDcgKzM3OCw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNr
U291cDo6ZGlzcGF0Y2hEaWRSZWMKICAgICBkZXByZWNhdGVkUmVzcG9uc2VNZXRyaWNzLnJlcXVl
c3RTdGFydCA9IG1fbmV0d29ya0xvYWRNZXRyaWNzLnJlcXVlc3RTdGFydDsKICAgICBkZXByZWNh
dGVkUmVzcG9uc2VNZXRyaWNzLnJlc3BvbnNlU3RhcnQgPSBtX25ldHdvcmtMb2FkTWV0cmljcy5y
ZXNwb25zZVN0YXJ0OwogCi0gICAgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2Uo
bV9yZXNwb25zZSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKFBvbGlj
eUFjdGlvbiBwb2xpY3lBY3Rpb24pIHsKKyAgICBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VS
ZXNwb25zZShtX3Jlc3BvbnNlKSwgTmVnb3RpYXRlZExlZ2FjeVRMUzo6Tm8sIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIHsK
ICAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNhbmNlbGluZyB8fCBtX3N0YXRlID09IFN0
YXRlOjpDb21wbGV0ZWQpIHsKICAgICAgICAgICAgIGNsZWFyUmVxdWVzdCgpOwogICAgICAgICAg
ICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5j
cHAJKHJldmlzaW9uIDI1NTcwOCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2Fk
U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTcsNyArMzE3LDcgQEAgdm9pZCBQYWdlTG9h
ZFN0YXRlOjpkaWRGYWlsUHJvdmlzaW9uYWxMbwogICAgIG1fdW5jb21taXR0ZWRTdGF0ZS51bnJl
YWNoYWJsZVVSTCA9IG1fbGFzdFVucmVhY2hhYmxlVVJMOwogfQogCi12b2lkIFBhZ2VMb2FkU3Rh
dGU6OmRpZENvbW1pdExvYWQoY29uc3QgVHJhbnNhY3Rpb246OlRva2VuJiB0b2tlbiwgV2ViQ2Vy
dGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgaGFzSW5zZWN1cmVDb250ZW50KQor
dm9pZCBQYWdlTG9hZFN0YXRlOjpkaWRDb21taXRMb2FkKGNvbnN0IFRyYW5zYWN0aW9uOjpUb2tl
biYgdG9rZW4sIFdlYkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBib29sIGhhc0lu
c2VjdXJlQ29udGVudCwgYm9vbCB1c2VkTGVnYWN5VExTKQogewogICAgIEFTU0VSVF9VTlVTRUQo
dG9rZW4sICZ0b2tlbi5tX3BhZ2VMb2FkU3RhdGUgPT0gdGhpcyk7CiAgICAgQVNTRVJUKG1fdW5j
b21taXR0ZWRTdGF0ZS5zdGF0ZSA9PSBTdGF0ZTo6UHJvdmlzaW9uYWwpOwpAQCAtMzI4LDcgKzMy
OCw3IEBAIHZvaWQgUGFnZUxvYWRTdGF0ZTo6ZGlkQ29tbWl0TG9hZChjb25zdCAKIAogICAgIG1f
dW5jb21taXR0ZWRTdGF0ZS51cmwgPSBtX3VuY29tbWl0dGVkU3RhdGUucHJvdmlzaW9uYWxVUkw7
CiAgICAgbV91bmNvbW1pdHRlZFN0YXRlLnByb3Zpc2lvbmFsVVJMID0gU3RyaW5nKCk7Ci0gICAg
bV91bmNvbW1pdHRlZFN0YXRlLm5lZ290aWF0ZWRMZWdhY3lUTFMgPSBmYWxzZTsKKyAgICBtX3Vu
Y29tbWl0dGVkU3RhdGUubmVnb3RpYXRlZExlZ2FjeVRMUyA9IHVzZWRMZWdhY3lUTFM7CiAKICAg
ICBtX3VuY29tbWl0dGVkU3RhdGUudGl0bGUgPSBTdHJpbmcoKTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmgJKHJldmlzaW9uIDI1NTcwOCkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTYz
LDcgKzE2Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZv
clByb3Zpc2lvbmFsTG9hZChjb25zdCBUcmFuc2FjdGlvbjo6VG9rZW4mLCBjb25zdCBTdHJpbmcm
IHVybCk7CiAgICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFRyYW5zYWN0aW9u
OjpUb2tlbiYpOwogCi0gICAgdm9pZCBkaWRDb21taXRMb2FkKGNvbnN0IFRyYW5zYWN0aW9uOjpU
b2tlbiYsIFdlYkNlcnRpZmljYXRlSW5mbyYsIGJvb2wgaGFzSW5zZWN1cmVDb250ZW50KTsKKyAg
ICB2b2lkIGRpZENvbW1pdExvYWQoY29uc3QgVHJhbnNhY3Rpb246OlRva2VuJiwgV2ViQ2VydGlm
aWNhdGVJbmZvJiwgYm9vbCBoYXNJbnNlY3VyZUNvbnRlbnQsIGJvb2wgdXNlZExlZ2FjeVRMUyk7
CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkKGNvbnN0IFRyYW5zYWN0aW9uOjpUb2tlbiYpOwogICAg
IHZvaWQgZGlkRmFpbExvYWQoY29uc3QgVHJhbnNhY3Rpb246OlRva2VuJik7CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAJKHJl
dmlzaW9uIDI1NTcwOCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFn
ZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY0LDcgKzI2NCw3IEBAIHZvaWQgUHJvdmlz
aW9uYWxQYWdlUHJveHk6OmRpZEZhaWxQcm92aXMKICAgICBtX3BhZ2UuZGlkRmFpbFByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIGZyYW1lSUQsIFdURk1v
dmUoZnJhbWVTZWN1cml0eU9yaWdpbiksIG5hdmlnYXRpb25JRCwgcHJvdmlzaW9uYWxVUkwsIGVy
cm9yLCB3aWxsQ29udGludWVMb2FkaW5nLCB1c2VyRGF0YSk7IC8vIE1heSBkZWxldGUgfHRoaXN8
LgogfQogCi12b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUo
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMy
X3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZp
Y2F0ZUluZm8sIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6
SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJE
YXRhJiB1c2VyRGF0YSkKK3ZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZENvbW1pdExvYWRG
b3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVy
LCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8m
IGNlcnRpZmljYXRlSW5mbywgYm9vbCB1c2VkTGVnYWN5VExTLCBib29sIGNvbnRhaW5zUGx1Z2lu
RG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFz
SW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgaWYgKCF2
YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkpCiAgICAgICAgIHJldHVybjsKQEAg
LTI3NCw3ICsyNzQsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDb21taXRMb2Fk
CiAgICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VJRCk7CiAKICAgICBtX3dhc0Nv
bW1pdHRlZCA9IHRydWU7Ci0gICAgbV9wYWdlLmNvbW1pdFByb3Zpc2lvbmFsUGFnZShmcmFtZUlE
LCBuYXZpZ2F0aW9uSUQsIG1pbWVUeXBlLCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwg
ZnJhbWVMb2FkVHlwZSwgY2VydGlmaWNhdGVJbmZvLCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBm
b3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIHVzZXJEYXRhKTsgLy8gV2lsbCBkZWxldGUgfHRoaXN8
LgorICAgIG1fcGFnZS5jb21taXRQcm92aXNpb25hbFBhZ2UoZnJhbWVJRCwgbmF2aWdhdGlvbklE
LCBtaW1lVHlwZSwgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIGZyYW1lTG9hZFR5cGUs
IGNlcnRpZmljYXRlSW5mbywgdXNlZExlZ2FjeVRMUywgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwg
Zm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCB1c2VyRGF0YSk7IC8vIFdpbGwgZGVsZXRlIHx0aGlz
fC4KIH0KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkTmF2aWdhdGVXaXRoTmF2aWdh
dGlvbkRhdGEoY29uc3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYgc3RvcmUsIEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlEKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQ
YWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNp
b25hbFBhZ2VQcm94eS5oCShyZXZpc2lvbiAyNTU3MDgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNyArMTIy
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBT
dHJpbmcmIHNvdXJjZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTFN0cmlu
ZywgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZENyZWF0ZU1haW5GcmFt
ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25h
bExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgVVJMJiYsIFVSTCYmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYpOwotICAg
IHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFz
Q3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJD
b3JlOjpDZXJ0aWZpY2F0ZUluZm8mLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlv
bmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50
LCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBm
cmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mLCBib29sIHVzZWRM
ZWdhY3lUTFMsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6
SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJE
YXRhJik7CiAgICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3Vy
aXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9u
YWxVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBXZWJDb3JlOjpXaWxsQ29udGlu
dWVMb2FkaW5nLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgc3RhcnRVUkxTY2hlbWVUYXNr
KFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYpOwogICAgIHZvaWQgYmFja0ZvcndhcmRHb1RvSXRl
bShjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgY29uc3QgV2ViQmFja0Zvcndh
cmRMaXN0Q291bnRzJik+JiYpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCShyZXZpc2lvbiAyNTU3MDgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTYxLDcgKzMxNjEsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvCiAgICAgc2VuZGVyLT5zZW5kKGFj
dGlvbiwgbmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpIDogMCwgZG93bmxv
YWRJRCwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6
OmNvbW1pdFByb3Zpc2lvbmFsUGFnZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9t
Q29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpD
ZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCBjb250YWluc1BsdWdpbkRvY3Vt
ZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2Vj
dXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6
OmNvbW1pdFByb3Zpc2lvbmFsUGFnZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9t
Q29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpD
ZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCB1c2VkTGVnYWN5VExTLCBib29s
IGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29u
dGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEp
CiB7CiAgICAgQVNTRVJUKG1fcHJvdmlzaW9uYWxQYWdlKTsKICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJjb21taXRQcm92aXNpb25hbFBhZ2U6IG5ld1BJRCA9ICVpIiwgbV9w
cm92aXNpb25hbFBhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzSWRlbnRpZmllcigpKTsKQEAgLTMxOTUs
NyArMzE5NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNpb25hbFBhZ2UKICAg
ICBjb25zdCBhdXRvIG9sZFdlYlBhZ2VJRCA9IG1fd2ViUGFnZUlEOwogICAgIHN3YXBUb1Byb3Zp
c2lvbmFsUGFnZShzdGQ6OmV4Y2hhbmdlKG1fcHJvdmlzaW9uYWxQYWdlLCBudWxscHRyKSk7CiAK
LSAgICBkaWRDb21taXRMb2FkRm9yRnJhbWUoZnJhbWVJRCwgbmF2aWdhdGlvbklELCBtaW1lVHlw
ZSwgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIGZyYW1lTG9hZFR5cGUsIGNlcnRpZmlj
YXRlSW5mbywgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50
LCB1c2VyRGF0YSk7CisgICAgZGlkQ29tbWl0TG9hZEZvckZyYW1lKGZyYW1lSUQsIG5hdmlnYXRp
b25JRCwgbWltZVR5cGUsIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBmcmFtZUxvYWRU
eXBlLCBjZXJ0aWZpY2F0ZUluZm8sIHVzZWRMZWdhY3lUTFMsIGNvbnRhaW5zUGx1Z2luRG9jdW1l
bnQsIGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgdXNlckRhdGEpOwogCiAgICAgbV9pbnNwZWN0
b3JDb250cm9sbGVyLT5kaWRDb21taXRQcm92aXNpb25hbFBhZ2Uob2xkV2ViUGFnZUlELCBtX3dl
YlBhZ2VJRCk7CiB9CkBAIC00NDgxLDcgKzQ0ODEsNyBAQCBzdGF0aWMgT3B0aW9uU2V0PENyb3Nz
U2l0ZU5hdmlnYXRpb25EYXRhCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZENv
bW1pdExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVu
dFByb3ZpZGVyLCB1aW50MzJfdCBvcGFxdWVGcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpD
ZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCBjb250YWluc1BsdWdpbkRvY3Vt
ZW50LCBPcHRpb25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+IGhhc0luc2VjdXJlQ29udGVudCwgY29u
c3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRG
b3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVy
LCB1aW50MzJfdCBvcGFxdWVGcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0
ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCB1c2VkTGVnYWN5VExTLCBib29sIGNvbnRhaW5z
UGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPEhhc0luc2VjdXJlQ29udGVudD4gaGFzSW5zZWN1cmVD
b250ZW50LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgTE9HKExvYWRpbmcsICIo
TG9hZGluZykgV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGRpZENvbW1pdExvYWRGb3JGcmFtZSBp
biBuYXZpZ2F0aW9uICUiIFBSSXU2NCwgbV9pZGVudGlmaWVyLnRvVUludDY0KCksIG5hdmlnYXRp
b25JRCk7CiAgICAgTE9HKEJhY2tGb3J3YXJkLCAiKEJhY2svRm9yd2FyZCkgQWZ0ZXIgbG9hZCBj
b21taXQsIGJhY2svZm9yd2FyZCBsaXN0IGlzIG5vdzolcyIsIG1fYmFja0ZvcndhcmRMaXN0LT5s
b2dnaW5nU3RyaW5nKCkpOwpAQCAtNDUyMyw3ICs0NTIzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpZENvbW1pdExvYWRGb3JGcmFtZQogICAgIGJvb2wgbWFya1BhZ2VJbnNlY3VyZSA9IGhhc0lu
c2VjdXJlQ29udGVudCA/IGhhc0luc2VjdXJlQ29udGVudC52YWx1ZSgpID09IEhhc0luc2VjdXJl
Q29udGVudDo6WWVzIDogbV90cmVhdHNTSEExQ2VydGlmaWNhdGVzQXNJbnNlY3VyZSAmJiBjZXJ0
aWZpY2F0ZUluZm8uY29udGFpbnNOb25Sb290U0hBMVNpZ25lZENlcnRpZmljYXRlKCk7CiAKICAg
ICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpIHsKLSAgICAgICAgbV9wYWdlTG9hZFN0YXRlLmRp
ZENvbW1pdExvYWQodHJhbnNhY3Rpb24sIHdlYkNlcnRpZmljYXRlSW5mbywgbWFya1BhZ2VJbnNl
Y3VyZSk7CisgICAgICAgIG1fcGFnZUxvYWRTdGF0ZS5kaWRDb21taXRMb2FkKHRyYW5zYWN0aW9u
LCB3ZWJDZXJ0aWZpY2F0ZUluZm8sIG1hcmtQYWdlSW5zZWN1cmUsIHVzZWRMZWdhY3lUTFMpOwog
ICAgICAgICBtX3Nob3VsZFN1cHByZXNzTmV4dEF1dG9tYXRpY05hdmlnYXRpb25TbmFwc2hvdCA9
IGZhbHNlOwogICAgIH0gZWxzZSBpZiAobWFya1BhZ2VJbnNlY3VyZSkKICAgICAgICAgbV9wYWdl
TG9hZFN0YXRlLmRpZERpc3BsYXlPclJ1bkluc2VjdXJlQ29udGVudCh0cmFuc2FjdGlvbik7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjU1NzA4
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE1ODcsNyArMTU4Nyw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgUHJvdmlzaW9u
YWxQYWdlUHJveHkqIHByb3Zpc2lvbmFsUGFnZVByb3h5KCkgY29uc3QgeyByZXR1cm4gbV9wcm92
aXNpb25hbFBhZ2UuZ2V0KCk7IH0KLSAgICB2b2lkIGNvbW1pdFByb3Zpc2lvbmFsUGFnZShXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3Qg
ZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiwgYm9vbCBjb250
YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+
IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGNv
bW1pdFByb3Zpc2lvbmFsUGFnZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNv
bnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2Vy
dGlmaWNhdGVJbmZvJiwgYm9vbCB1c2VkTGVnYWN5VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9j
dW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5z
ZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYpOwogCiAgICAgLy8gTG9naWMgc2hhcmVkIGJl
dHdlZW4gdGhlIFdlYlBhZ2VQcm94eSBhbmQgdGhlIFByb3Zpc2lvbmFsUGFnZVByb3h5LgogICAg
IHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgVVJMJiYsIFVSTCYmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYpOwpAQCAtMTcz
Nyw3ICsxNzM3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENhbmNlbENsaWVudFJlZGlyZWN0
Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZENoYW5nZVBy
b3Zpc2lvbmFsVVJMRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIFVSTCYmKTsKICAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JG
cmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3Ry
aW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFdlYkNv
cmU6OldpbGxDb250aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBkaWRD
b21taXRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250
ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRp
ZmljYXRlSW5mbyYsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29y
ZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVz
ZXJEYXRhJik7CisgICAgdm9pZCBkaWRDb21taXRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9hZFR5
cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYsIGJvb2wgdXNlZExlZ2FjeVRMUywg
Ym9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3Vy
ZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmKTsKICAg
ICB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQg
ZGlkRmluaXNoTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkRmFpbExvYWRGb3JG
cmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFVzZXJEYXRhJik7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShyZXZp
c2lvbiAyNTU3MDgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTEyNiw3ICsxMjYsNyBAQCBtZXNzYWdlcyAtPiBX
ZWJQYWdlUHJveHkgewogICAgIERpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCiAgICAgRGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxG
b3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBVUkwgdXJsKQogICAgIERpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFN0cmlu
ZyBwcm92aXNpb25hbFVSTCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgZW51bTpib29s
IFdlYkNvcmU6OldpbGxDb250aW51ZUxvYWRpbmcgd2lsbENvbnRpbnVlTG9hZGluZywgV2ViS2l0
OjpVc2VyRGF0YSB1c2VyRGF0YSkKLSAgICBEaWRDb21taXRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU3RyaW5nIG1p
bWVUeXBlLCBib29sIGhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgbG9hZFR5cGUs
IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgY29udGFpbnNQ
bHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3Jj
ZWRIYXNJbnNlY3VyZUNvbnRlbnQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCisgICAgRGlk
Q29tbWl0TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIFN0cmluZyBtaW1lVHlwZSwgYm9vbCBoYXNDdXN0b21Db250ZW50
UHJvdmlkZXIsIHVpbnQzMl90IGxvYWRUeXBlLCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8gY2Vy
dGlmaWNhdGVJbmZvLCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1
bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNl
Y3VyZUNvbnRlbnQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkRmFpbExvYWRG
b3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBXZWJLaXQ6OlVzZXJEYXRhIHVz
ZXJEYXRhKQogICAgIERpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYktpdDo6VXNlckRh
dGEgdXNlckRhdGEpCiAgICAgRGlkRmluaXNoTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYktpdDo6VXNlckRhdGEg
dXNlckRhdGEpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9u
IDI1NTcwOCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2MCw3ICs1NjAsNyBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvCiAgICAgd2ViUGFnZS0+c2Fu
ZGJveEV4dGVuc2lvblRyYWNrZXIoKS5kaWRDb21taXRQcm92aXNpb25hbExvYWQobV9mcmFtZSk7
CiAKICAgICAvLyBOb3RpZnkgdGhlIFVJUHJvY2Vzcy4KLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRpZENvbW1pdExvYWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlE
KCksIGRvY3VtZW50TG9hZGVyLm5hdmlnYXRpb25JRCgpLCBkb2N1bWVudExvYWRlci5yZXNwb25z
ZSgpLm1pbWVUeXBlKCksIG1fZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHN0YXRpY19j
YXN0PHVpbnQzMl90PihtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkubG9hZFR5cGUoKSks
IHZhbHVlT3JDb21wdXRlKGRvY3VtZW50TG9hZGVyLnJlc3BvbnNlKCkuY2VydGlmaWNhdGVJbmZv
KCksIFtdIHsgcmV0dXJuIENlcnRpZmljYXRlSW5mbygpOyB9KSwgbV9mcmFtZS0+Y29yZUZyYW1l
KCktPmRvY3VtZW50KCktPmlzUGx1Z2luRG9jdW1lbnQoKSwgaGFzSW5zZWN1cmVDb250ZW50LCBV
c2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVz
KHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKKyAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpZENvbW1pdExvYWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIGRv
Y3VtZW50TG9hZGVyLm5hdmlnYXRpb25JRCgpLCBkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLm1p
bWVUeXBlKCksIG1fZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHN0YXRpY19jYXN0PHVp
bnQzMl90PihtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkubG9hZFR5cGUoKSksIHZhbHVl
T3JDb21wdXRlKGRvY3VtZW50TG9hZGVyLnJlc3BvbnNlKCkuY2VydGlmaWNhdGVJbmZvKCksIFtd
IHsgcmV0dXJuIENlcnRpZmljYXRlSW5mbygpOyB9KSwgZG9jdW1lbnRMb2FkZXIucmVzcG9uc2Uo
KS51c2VkTGVnYWN5VExTKCksIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLT5pc1Bs
dWdpbkRvY3VtZW50KCksIGhhc0luc2VjdXJlQ29udGVudCwgVXNlckRhdGEoV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0
KCkpKSk7CiAgICAgd2ViUGFnZS0+ZGlkQ29tbWl0TG9hZChtX2ZyYW1lKTsKIH0KIApJbmRleDog
VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24g
MjU1NzA5KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQg
QEAKKzIwMjAtMDItMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBGaXggcmFjZSBjb25kaXRpb24gZm9yIFdLV2ViVmlldy5fbmVnb3RpYXRl
ZExlZ2FjeVRMUyB3aGVuIGxvYWRpbmcgbWFpbiByZXNvdW9yY2UKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzIwNworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhUVFBTZXJ2ZXIgbm93IHN1cHBvcnRzIEhU
VFBTLiBUZWxsIHlvdXIgZnJpZW5kcyEKKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvQ2hhbGxlbmdlLm1tOgorICAgICAgICAodGVzdENlcnRpZmljYXRlKToKKyAg
ICAgICAgKHRlc3RJZGVudGl0eSk6CisgICAgICAgIChjcmVkZW50aWFsV2l0aElkZW50aXR5KToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RMU0RlcHJlY2F0aW9u
Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6d2ViVmlld1dpdGhOYXZpZ2F0aW9uRGVsZWdh
dGUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9jb2NvYS9IVFRQU2VydmVyLmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9I
VFRQU2VydmVyLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6SFRUUFNl
cnZlcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpyZXF1ZXN0IGNvbnN0
KToKKwogMjAyMC0wMi0wNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgogCiAgICAgICAgIEZpeCBNYWMgQ01ha2UgYnVpbGQKSW5kZXg6IFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2hhbGxlbmdlLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2hhbGxlbmdlLm1tCShyZXZpc2lvbiAy
NTU3MDgpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NoYWxsZW5n
ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogCiAjaW1wb3J0ICJjb25maWcu
aCIKIAorI2ltcG9ydCAiSFRUUFNlcnZlci5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMu
aCIKICNpbXBvcnQgIlRDUFNlcnZlci5oIgogI2ltcG9ydCAiVGVzdC5oIgpAQCAtNDMsMTEgKzQ0
LDE0IEBACiAKIHN0YXRpYyBib29sIG5hdmlnYXRpb25GaW5pc2hlZDsKIAotc3RhdGljIFJldGFp
blB0cjxOU1VSTENyZWRlbnRpYWw+IGNyZWRlbnRpYWxXaXRoSWRlbnRpdHkoKQorc3RhdGljIFJl
dGFpblB0cjxTZWNDZXJ0aWZpY2F0ZVJlZj4gdGVzdENlcnRpZmljYXRlKCkKIHsKICAgICBhdXRv
IGNlcnRpZmljYXRlQnl0ZXMgPSBUZXN0V2ViS2l0QVBJOjpUQ1BTZXJ2ZXI6OnRlc3RDZXJ0aWZp
Y2F0ZSgpOwotICAgIGF1dG8gY2VydGlmaWNhdGUgPSBhZG9wdENGKFNlY0NlcnRpZmljYXRlQ3Jl
YXRlV2l0aERhdGEobnVsbHB0ciwgKF9fYnJpZGdlIENGRGF0YVJlZilbTlNEYXRhIGRhdGFXaXRo
Qnl0ZXM6Y2VydGlmaWNhdGVCeXRlcy5kYXRhKCkgbGVuZ3RoOmNlcnRpZmljYXRlQnl0ZXMuc2l6
ZSgpXSkpOwotICAgIAorICAgIHJldHVybiBhZG9wdENGKFNlY0NlcnRpZmljYXRlQ3JlYXRlV2l0
aERhdGEobnVsbHB0ciwgKF9fYnJpZGdlIENGRGF0YVJlZilbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6
Y2VydGlmaWNhdGVCeXRlcy5kYXRhKCkgbGVuZ3RoOmNlcnRpZmljYXRlQnl0ZXMuc2l6ZSgpXSkp
OworfQorCitSZXRhaW5QdHI8U2VjSWRlbnRpdHlSZWY+IHRlc3RJZGVudGl0eSgpCit7CiAgICAg
YXV0byBwcml2YXRlS2V5Qnl0ZXMgPSBUZXN0V2ViS2l0QVBJOjpUQ1BTZXJ2ZXI6OnRlc3RQcml2
YXRlS2V5KCk7CiAgICAgTlNEYXRhICpkZXJFbmNvZGVkUHJpdmF0ZUtleSA9IFtOU0RhdGEgZGF0
YVdpdGhCeXRlczpwcml2YXRlS2V5Qnl0ZXMuZGF0YSgpIGxlbmd0aDpwcml2YXRlS2V5Qnl0ZXMu
c2l6ZSgpXTsKICAgICBOU0RpY3Rpb25hcnkqIG9wdGlvbnMgPSBAewpAQCAtNjEsMTAgKzY1LDE1
IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNVUkxDcmVkZW50aWFsPiBjcmVkZW4KICAgICBFWFBFQ1Rf
TlVMTChlcnJvcik7CiAgICAgRVhQRUNUX05PVF9OVUxMKHByaXZhdGVLZXkuZ2V0KCkpOwogCi0g
ICAgYXV0byBpZGVudGl0eSA9IGFkb3B0Q0YoU2VjSWRlbnRpdHlDcmVhdGUoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgY2VydGlmaWNhdGUuZ2V0KCksIHByaXZhdGVLZXkuZ2V0KCkpKTsKKyAgICByZXR1
cm4gYWRvcHRDRihTZWNJZGVudGl0eUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB0ZXN0Q2Vy
dGlmaWNhdGUoKS5nZXQoKSwgcHJpdmF0ZUtleS5nZXQoKSkpOworfQorCitzdGF0aWMgUmV0YWlu
UHRyPE5TVVJMQ3JlZGVudGlhbD4gY3JlZGVudGlhbFdpdGhJZGVudGl0eSgpCit7CisgICAgYXV0
byBpZGVudGl0eSA9IHRlc3RJZGVudGl0eSgpOwogICAgIEVYUEVDVF9OT1RfTlVMTChpZGVudGl0
eSk7CiAgICAgCi0gICAgcmV0dXJuIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbFdpdGhJZGVu
dGl0eTppZGVudGl0eS5nZXQoKSBjZXJ0aWZpY2F0ZXM6QFsoaWQpY2VydGlmaWNhdGUuZ2V0KCld
IHBlcnNpc3RlbmNlOk5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZV07CisgICAgcmV0dXJu
IFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbFdpdGhJZGVudGl0eTppZGVudGl0eS5nZXQoKSBj
ZXJ0aWZpY2F0ZXM6QFsoaWQpdGVzdENlcnRpZmljYXRlKCkuZ2V0KCldIHBlcnNpc3RlbmNlOk5T
VVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZV07CiB9CiAKIEBpbnRlcmZhY2UgQ2hhbGxlbmdl
RGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+CkluZGV4OiBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RMU0RlcHJlY2F0aW9uLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVExTRGVwcmVjYXRp
b24ubW0JKHJldmlzaW9uIDI1NTcwOCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvVExTRGVwcmVjYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcg
QEAKIAogI2lmIEhBVkUoU1NMKQogCisjaW1wb3J0ICJIVFRQU2VydmVyLmgiCiAjaW1wb3J0ICJQ
bGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVENQU2VydmVyLmgiCiAjaW1wb3J0ICJUZXN0
TmF2aWdhdGlvbkRlbGVnYXRlLmgiCkBAIC0zNywxMyArMzgsMTQgQEAKICNpbXBvcnQgPFdlYktp
dC9XZWJLaXQuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbi5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL3RleHQvU3Ry
aW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2lt
cG9ydCA8V2ViS2l0L1dlYlVJS2l0U3VwcG9ydC5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkNvcmVU
aHJlYWQuaD4KICNlbmRpZgogCi0jaWYgSEFWRShUTFNfUFJPVE9DT0xfVkVSU0lPTl9UKQorI2lm
IEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkgfHwgSEFWRShORVRXT1JLX0ZSQU1FV09SSykK
IEBpbnRlcmZhY2UgVExTT2JzZXJ2ZXIgOiBOU09iamVjdAogLSAodm9pZCl3YWl0VW50aWxOZWdv
dGlhdGVkTGVnYWN5VExTQ2hhbmdlZDsKIEBlbmQKQEAgLTIyOCwxMyArMjMwLDkgQEAgVEVTVChU
TFNWZXJzaW9uLCBESVNBQkxFRF9OYXZpZ2F0aW9uRGVsZQogfQogCiAjaWYgSEFWRShUTFNfUFJP
VE9DT0xfVkVSU0lPTl9UKQotVEVTVChUTFNWZXJzaW9uLCBOZWdvdGlhdGVkTGVnYWN5VExTKQot
ewotICAgIFRDUFNlcnZlciBzZXJ2ZXIoVENQU2VydmVyOjpQcm90b2NvbDo6SFRUUFMsIFtdIChT
U0wgKnNzbCkgewotICAgICAgICBUQ1BTZXJ2ZXI6OnJlc3BvbmRXaXRoT0soc3NsKTsKLSAgICAg
ICAgVENQU2VydmVyOjpyZXNwb25kV2l0aE9LKHNzbCk7Ci0gICAgfSwgdGxzMV8xKTsKIAorc3Rh
dGljIHN0ZDo6cGFpcjxSZXRhaW5QdHI8V0tXZWJWaWV3PiwgUmV0YWluUHRyPFRlc3ROYXZpZ2F0
aW9uRGVsZWdhdGU+PiB3ZWJWaWV3V2l0aE5hdmlnYXRpb25EZWxlZ2F0ZSgpCit7CiAgICAgYXV0
byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7CiAgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwogICAgIFt3ZWJWaWV3IHNl
dE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CkBAIC0yNDIsNiArMjQwLDIwIEBA
IFRFU1QoVExTVmVyc2lvbiwgTmVnb3RpYXRlZExlZ2FjeVRMUykKICAgICAgICAgRVhQRUNUX1dL
X1NUUkVRKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2QsIE5T
VVJMQXV0aGVudGljYXRpb25NZXRob2RTZXJ2ZXJUcnVzdCk7CiAgICAgICAgIGNhbGxiYWNrKE5T
VVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNy
ZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0XSk7
CiAgICAgfV07CisgICAgcmV0dXJuIHsgd2ViVmlldywgZGVsZWdhdGUgfTsKK30KKworI2VuZGlm
IC8vIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkgfHwgSEFWRShORVRXT1JLX0ZSQU1FV09S
SykKKworI2lmIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkKKworVEVTVChUTFNWZXJzaW9u
LCBOZWdvdGlhdGVkTGVnYWN5VExTKQoreworICAgIEhUVFBTZXJ2ZXIgc2VydmVyKHsKKyAgICAg
ICAgeyAiLyIsIHsgImhlbGxvIiB9IH0KKyAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0
cHNXaXRoTGVnYWN5VExTKTsKKworICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHdlYlZp
ZXdXaXRoTmF2aWdhdGlvbkRlbGVnYXRlKCk7CiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0g
W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlci5wb3J0
KCldXV07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CiAKQEAgLTI2Miw3ICsy
NzQsNjQgQEAgVEVTVChUTFNWZXJzaW9uLCBOZWdvdGlhdGVkTGVnYWN5VExTKQogCiAgICAgW3dl
YlZpZXcgcmVtb3ZlT2JzZXJ2ZXI6b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAIl9uZWdvdGlh
dGVkTGVnYWN5VExTIl07CiB9Ci0jZW5kaWYKKworI2VuZGlmIC8vIEhBVkUoVExTX1BST1RPQ09M
X1ZFUlNJT05fVCkKKworI2lmIEhBVkUoTkVUV09SS19GUkFNRVdPUkspICYmIEhBVkUoVExTX1BS
T1RPQ09MX1ZFUlNJT05fVCkKKworVEVTVChUTFNWZXJzaW9uLCBOYXZpZ2F0ZUJhY2spCit7Cisg
ICAgSFRUUFNlcnZlciBsZWdhY3lUTFNTZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyAiaGVsbG8i
IH0gfQorICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwc1dpdGhMZWdhY3lUTFMpOwor
CisgICAgSFRUUFNlcnZlciBtb2Rlcm5UTFNTZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyAiaGVs
bG8iIH0gfQorICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CisgICAgCisgICAg
YXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gd2ViVmlld1dpdGhOYXZpZ2F0aW9uRGVsZWdhdGUo
KTsKKyAgICBhdXRvIG9ic2VydmVyID0gYWRvcHROUyhbVExTT2JzZXJ2ZXIgbmV3XSk7CisgICAg
W3dlYlZpZXcgYWRkT2JzZXJ2ZXI6b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAIl9uZWdvdGlh
dGVkTGVnYWN5VExTIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4
dDpuaWxdOworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6bGVnYWN5VExTU2VydmVyLnJlcXVl
c3QoKV07CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IF9uZWdvdGlhdGVkTGVnYWN5VExTXSk7
CisgICAgW2RlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKyAgICBFWFBFQ1Rf
VFJVRShbd2ViVmlldyBfbmVnb3RpYXRlZExlZ2FjeVRMU10pOworCisgICAgW3dlYlZpZXcgbG9h
ZFJlcXVlc3Q6bW9kZXJuVExTU2VydmVyLnJlcXVlc3QoKV07CisgICAgW2RlbGVnYXRlIHdhaXRG
b3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgX25lZ290
aWF0ZWRMZWdhY3lUTFNdKTsKKworICAgIFt3ZWJWaWV3IGdvQmFja107CisgICAgW29ic2VydmVy
IHdhaXRVbnRpbE5lZ290aWF0ZWRMZWdhY3lUTFNDaGFuZ2VkXTsKKyAgICBFWFBFQ1RfVFJVRShb
d2ViVmlldyBfbmVnb3RpYXRlZExlZ2FjeVRMU10pOworCisgICAgW3dlYlZpZXcgcmVtb3ZlT2Jz
ZXJ2ZXI6b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAIl9uZWdvdGlhdGVkTGVnYWN5VExTIl07
Cit9CisKK1RFU1QoVExTVmVyc2lvbiwgU3VicmVzb3VyY2UpCit7CisgICAgSFRUUFNlcnZlciBs
ZWdhY3lUTFNTZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyAiaGVsbG8iIH0gfQorICAgIH0sIEhU
VFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwc1dpdGhMZWdhY3lUTFMpOworCisgICAgSFRUUFNlcnZl
ciBtb2Rlcm5UTFNTZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyBtYWtlU3RyaW5nKCI8c2NyaXB0
PmZldGNoKCdodHRwczovLzEyNy4wLjAuMToiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGVnYWN5
VExTU2VydmVyLnBvcnQoKSksICIvJyx7bW9kZTonbm8tY29ycyd9KTwvc2NyaXB0PiIpIH0gfQor
ICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CisgICAgCisgICAgYXV0byBbd2Vi
VmlldywgZGVsZWdhdGVdID0gd2ViVmlld1dpdGhOYXZpZ2F0aW9uRGVsZWdhdGUoKTsKKyAgICBh
dXRvIG9ic2VydmVyID0gYWRvcHROUyhbVExTT2JzZXJ2ZXIgbmV3XSk7CisgICAgW3dlYlZpZXcg
YWRkT2JzZXJ2ZXI6b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAIl9uZWdvdGlhdGVkTGVnYWN5
VExTIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDpuaWxdOwor
CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IF9uZWdvdGlhdGVkTGVnYWN5VExTXSk7CisgICAg
W3dlYlZpZXcgbG9hZFJlcXVlc3Q6bW9kZXJuVExTU2VydmVyLnJlcXVlc3QoKV07CisgICAgd2hp
bGUgKCFbd2ViVmlldyBfbmVnb3RpYXRlZExlZ2FjeVRMU10pCisgICAgICAgIFtvYnNlcnZlciB3
YWl0VW50aWxOZWdvdGlhdGVkTGVnYWN5VExTQ2hhbmdlZF07CisKKyAgICBbd2ViVmlldyByZW1v
dmVPYnNlcnZlcjpvYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOkAiX25lZ290aWF0ZWRMZWdhY3lU
TFMiXTsKK30KKworI2VuZGlmIC8vIEhBVkUoTkVUV09SS19GUkFNRVdPUkspICYmIEhBVkUoVExT
X1BST1RPQ09MX1ZFUlNJT05fVCkKIAogLy8gRklYTUU6IEFkZCBzb21lIHRlc3RzIGZvciBXS1dl
YlZpZXcuaGFzT25seVNlY3VyZUNvbnRlbnQKIApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9j
b2NvYS9IVFRQU2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9IVFRQU2VydmVyLmgJKHJldmlzaW9uIDI1NTcwOCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
Y29jb2EvSFRUUFNlcnZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw4IEBAIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJIHsKIGNsYXNzIEhUVFBTZXJ2ZXIgewogcHVibGljOgogICAgIHN0
cnVjdCBIVFRQUmVzcG9uc2U7Ci0gICAgSFRUUFNlcnZlcihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8
c3RkOjpwYWlyPFN0cmluZywgSFRUUFJlc3BvbnNlPj4pOworICAgIGVudW0gY2xhc3MgUHJvdG9j
b2wgOiB1aW50OF90IHsgSHR0cCwgSHR0cHMsIEh0dHBzV2l0aExlZ2FjeVRMUyB9OworICAgIEhU
VFBTZXJ2ZXIoc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxTdHJpbmcsIEhUVFBSZXNw
b25zZT4+LCBQcm90b2NvbCA9IFByb3RvY29sOjpIdHRwKTsKICAgICB1aW50MTZfdCBwb3J0KCkg
Y29uc3Q7CiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0KCkgY29uc3Q7CiAgICAgCkBAIC00Niw2
ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXNwb25kVG9SZXF1ZXN0cyhud19jb25uZWN0
aW9uX3QpOwogICAgIAogICAgIFJldGFpblB0cjxud19saXN0ZW5lcl90PiBtX2xpc3RlbmVyOwor
ICAgIGNvbnN0IFByb3RvY29sIG1fcHJvdG9jb2w7CiAgICAgY29uc3QgSGFzaE1hcDxTdHJpbmcs
IEhUVFBSZXNwb25zZT4gbV9yZXF1ZXN0UmVzcG9uc2VNYXA7CiB9OwogCkBAIC03NCwzICs3Niw1
IEBAIHN0cnVjdCBIVFRQU2VydmVyOjpIVFRQUmVzcG9uc2UgewogfSAvLyBuYW1lc3BhY2UgVGVz
dFdlYktpdEFQSQogCiAjZW5kaWYgLy8gSEFWRShORVRXT1JLX0ZSQU1FV09SSykKKworUmV0YWlu
UHRyPFNlY0lkZW50aXR5UmVmPiB0ZXN0SWRlbnRpdHkoKTsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJL
aXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0
QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0JKHJldmlzaW9uIDI1NTcwOCkKKysrIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMzMsMTUgKzMz
LDI4IEBACiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotSFRUUFNlcnZlcjo6SFRUUFNl
cnZlcihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPFN0cmluZywgSFRUUFJlc3BvbnNl
Pj4gcmVzcG9uc2VzKQotICAgIDogbV9yZXF1ZXN0UmVzcG9uc2VNYXAoW10oc3RkOjppbml0aWFs
aXplcl9saXN0PHN0ZDo6cGFpcjxTdHJpbmcsIEhUVFBTZXJ2ZXI6OkhUVFBSZXNwb25zZT4+IGxp
c3QpIHsKK0hUVFBTZXJ2ZXI6OkhUVFBTZXJ2ZXIoc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6
cGFpcjxTdHJpbmcsIEhUVFBSZXNwb25zZT4+IHJlc3BvbnNlcywgUHJvdG9jb2wgcHJvdG9jb2wp
CisgICAgOiBtX3Byb3RvY29sKHByb3RvY29sKQorICAgICwgbV9yZXF1ZXN0UmVzcG9uc2VNYXAo
W10oc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxTdHJpbmcsIEhUVFBTZXJ2ZXI6OkhU
VFBSZXNwb25zZT4+IGxpc3QpIHsKICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIEhUVFBTZXJ2ZXI6
OkhUVFBSZXNwb25zZT4gbWFwOwogICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBsaXN0KQogICAg
ICAgICAgICAgbWFwLmFkZChwYWlyLmZpcnN0LCBwYWlyLnNlY29uZCk7CiAgICAgICAgIHJldHVy
biBtYXA7CiAgICAgfShyZXNwb25zZXMpKQogewotICAgIGF1dG8gcGFyYW1ldGVycyA9IGFkb3B0
TlMobndfcGFyYW1ldGVyc19jcmVhdGVfc2VjdXJlX3RjcChOV19QQVJBTUVURVJTX0RJU0FCTEVf
UFJPVE9DT0wsIE5XX1BBUkFNRVRFUlNfREVGQVVMVF9DT05GSUdVUkFUSU9OKSk7CisgICAgYXV0
byBjb25maWd1cmVUTFMgPSBwcm90b2NvbCA9PSBQcm90b2NvbDo6SHR0cCA/IE5XX1BBUkFNRVRF
UlNfRElTQUJMRV9QUk9UT0NPTCA6IF4obndfcHJvdG9jb2xfb3B0aW9uc190IHByb3RvY29sT3B0
aW9ucykgeworI2lmIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkKKyAgICAgICAgYXV0byBv
cHRpb25zID0gYWRvcHROUyhud190bHNfY29weV9zZWNfcHJvdG9jb2xfb3B0aW9ucyhwcm90b2Nv
bE9wdGlvbnMpKTsKKyAgICAgICAgYXV0byBpZGVudGl0eSA9IGFkb3B0TlMoc2VjX2lkZW50aXR5
X2NyZWF0ZSh0ZXN0SWRlbnRpdHkoKS5nZXQoKSkpOworICAgICAgICBzZWNfcHJvdG9jb2xfb3B0
aW9uc19zZXRfbG9jYWxfaWRlbnRpdHkob3B0aW9ucy5nZXQoKSwgaWRlbnRpdHkuZ2V0KCkpOwor
ICAgICAgICBpZiAocHJvdG9jb2wgPT0gUHJvdG9jb2w6Okh0dHBzV2l0aExlZ2FjeVRMUykKKyAg
ICAgICAgICAgIHNlY19wcm90b2NvbF9vcHRpb25zX3NldF9tYXhfdGxzX3Byb3RvY29sX3ZlcnNp
b24ob3B0aW9ucy5nZXQoKSwgdGxzX3Byb3RvY29sX3ZlcnNpb25fVExTdjEwKTsKKyNlbHNlCisg
ICAgICAgIFVOVVNFRF9QQVJBTShwcm90b2NvbE9wdGlvbnMpOworICAgICAgICBBU1NFUlQocHJv
dG9jb2wgIT0gUHJvdG9jb2w6Okh0dHBzV2l0aExlZ2FjeVRMUyk7CisjZW5kaWYKKyAgICB9Owor
ICAgIGF1dG8gcGFyYW1ldGVycyA9IGFkb3B0TlMobndfcGFyYW1ldGVyc19jcmVhdGVfc2VjdXJl
X3RjcChjb25maWd1cmVUTFMsIE5XX1BBUkFNRVRFUlNfREVGQVVMVF9DT05GSUdVUkFUSU9OKSk7
CiAgICAgbV9saXN0ZW5lciA9IGFkb3B0TlMobndfbGlzdGVuZXJfY3JlYXRlKHBhcmFtZXRlcnMu
Z2V0KCkpKTsKICAgICBud19saXN0ZW5lcl9zZXRfcXVldWUobV9saXN0ZW5lci5nZXQoKSwgZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7CiAgICAgbndfbGlzdGVuZXJfc2V0X25ld19jb25uZWN0
aW9uX2hhbmRsZXIobV9saXN0ZW5lci5nZXQoKSwgXihud19jb25uZWN0aW9uX3QgY29ubmVjdGlv
bikgewpAQCAtMTI3LDcgKzE0MCwxNyBAQCB1aW50MTZfdCBIVFRQU2VydmVyOjpwb3J0KCkgY29u
c3QKIAogTlNVUkxSZXF1ZXN0ICpIVFRQU2VydmVyOjpyZXF1ZXN0KCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHA6Ly8xMjcuMC4wLjE6JWQvIiwgcG9ydCgp
XV1dOworICAgIE5TU3RyaW5nICpmb3JtYXQ7CisgICAgc3dpdGNoIChtX3Byb3RvY29sKSB7Cisg
ICAgY2FzZSBQcm90b2NvbDo6SHR0cDoKKyAgICAgICAgZm9ybWF0ID0gQCJodHRwOi8vMTI3LjAu
MC4xOiVkLyI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHJvdG9jb2w6Okh0dHBzOgorICAg
IGNhc2UgUHJvdG9jb2w6Okh0dHBzV2l0aExlZ2FjeVRMUzoKKyAgICAgICAgZm9ybWF0ID0gQCJo
dHRwczovLzEyNy4wLjAuMTolZC8iOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJu
IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6Zm9ybWF0LCBwb3J0KCldXV07CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389740</attachid>
            <date>2020-02-04 16:37:29 -0800</date>
            <delta_ts>2020-02-04 16:46:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207207-20200204163728.patch</filename>
            <type>text/plain</type>
            <size>55294</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NTcwOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDIwLTAyLTA0ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBXS1dl
YlZpZXcuX25lZ290aWF0ZWRMZWdhY3lUTFMgYWNjdXJhdGUgd2hlbiBsb2FkaW5nIG1haW4gcmVz
b3VvcmNlIGZyb20gbmV0d29yayBvciBjYWNoZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3MjA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VC
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjppbmNsdWRl
Q2VydGlmaWNhdGVJbmZvIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVzcG9uc2VCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFz
ZTo6dXNlZExlZ2FjeVRMUyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlQmFzZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2VCYXNlOjpkZWNvZGUpOgorCiAyMDIwLTAyLTA0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IE1hYyBDTWFrZSBidWlsZApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
c3BvbnNlQmFzZS5jcHAJKHJldmlzaW9uIDI1NTcwOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NjEsMTEgKzI2MSwxMiBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRUeXBlKFR5cGUg
CiAgICAgbV90eXBlID0gdHlwZTsKIH0KIAotdm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aW5j
bHVkZUNlcnRpZmljYXRlSW5mbygpIGNvbnN0Cit2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpp
bmNsdWRlQ2VydGlmaWNhdGVJbmZvKFVzZWRMZWdhY3lUTFMgdXNlZExlZ2FjeVRMUykgY29uc3QK
IHsKICAgICBpZiAobV9jZXJ0aWZpY2F0ZUluZm8pCiAgICAgICAgIHJldHVybjsKICAgICBtX2Nl
cnRpZmljYXRlSW5mbyA9IHN0YXRpY19jYXN0PGNvbnN0IFJlc291cmNlUmVzcG9uc2UqPih0aGlz
KS0+cGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8oKTsKKyAgICBtX3VzZWRMZWdhY3lUTFMgPSB1c2Vk
TGVnYWN5VExTOwogfQogCiBTdHJpbmcgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnN1Z2dlc3RlZEZp
bGVuYW1lKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXNwb25zZUJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgJKHJldmlzaW9uIDI1NTcwOCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAkod29y
a2luZyBjb3B5KQpAQCAtNDEsNiArNDEsOCBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCiBi
b29sIGlzU2NyaXB0QWxsb3dlZEJ5Tm9zbmlmZihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAK
K2VudW0gY2xhc3MgVXNlZExlZ2FjeVRMUyA6IGJvb2wgeyBObywgWWVzIH07CisKIC8vIERvIG5v
dCB1c2UgdGhpcyBjbGFzcyBkaXJlY3RseSwgdXNlIHRoZSBjbGFzcyBSZXNvdXJjZVJlc3BvbnNl
IGluc3RlYWQKIGNsYXNzIFJlc291cmNlUmVzcG9uc2VCYXNlIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKQEAgLTEyNyw4ICsxMjksOSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFN0cmluZyBzYW5pdGl6ZVN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpOwog
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbmNsdWRlQ2VydGlmaWNhdGVJbmZvKCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbmNsdWRlQ2VydGlmaWNhdGVJbmZvKFVzZWRMZWdh
Y3lUTFMgPSBVc2VkTGVnYWN5VExTOjpObykgY29uc3Q7CiAgICAgY29uc3QgT3B0aW9uYWw8Q2Vy
dGlmaWNhdGVJbmZvPiYgY2VydGlmaWNhdGVJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9jZXJ0aWZp
Y2F0ZUluZm87IH07CisgICAgYm9vbCB1c2VkTGVnYWN5VExTKCkgY29uc3QgeyByZXR1cm4gbV91
c2VkTGVnYWN5VExTID09IFVzZWRMZWdhY3lUTFM6OlllczsgfQogICAgIAogICAgIC8vIFRoZXNl
IGZ1bmN0aW9ucyByZXR1cm4gcGFyc2VkIHZhbHVlcyBvZiB0aGUgY29ycmVzcG9uZGluZyByZXNw
b25zZSBoZWFkZXJzLgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY2FjaGVDb250cm9sQ29udGFp
bnNOb0NhY2hlKCkgY29uc3Q7CkBAIC0yNDYsNyArMjQ5LDggQEAgcHJpdmF0ZToKICAgICBib29s
IG1faXNSYW5nZVJlcXVlc3RlZCB7IGZhbHNlIH07CiAKIHByb3RlY3RlZDoKLSAgICBpbnQgbV9o
dHRwU3RhdHVzQ29kZSB7IDAgfTsKKyAgICBzaG9ydCBtX2h0dHBTdGF0dXNDb2RlIHsgMCB9Owor
ICAgIG11dGFibGUgVXNlZExlZ2FjeVRMUyBtX3VzZWRMZWdhY3lUTFMgeyBVc2VkTGVnYWN5VExT
OjpObyB9OwogfTsKIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiBhLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBiKSB7IHJldHVybiBSZXNvdXJjZVJlc3Bv
bnNlQmFzZTo6Y29tcGFyZShhLCBiKTsgfQpAQCAtMjczLDEyICsyNzcsMTMgQEAgdm9pZCBSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6ZW5jb2RlKEVuY29kZQogICAgIGlmIChFbmNvZGVyOjppc0lQQ0Vu
Y29kZXIpCiAgICAgICAgIGVuY29kZXIgPDwgbV9uZXR3b3JrTG9hZE1ldHJpY3M7CiAKLSAgICBl
bmNvZGVyIDw8IG1faHR0cFN0YXR1c0NvZGU7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxp
bnQ+KG1faHR0cFN0YXR1c0NvZGUpOwogICAgIGVuY29kZXIgPDwgbV9jZXJ0aWZpY2F0ZUluZm87
CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKG1fc291cmNlKTsKICAgICBlbmNvZGVyLmVuY29kZUVu
dW0obV90eXBlKTsKICAgICBlbmNvZGVyLmVuY29kZUVudW0obV90YWludGluZyk7CiAgICAgZW5j
b2RlciA8PCBtX2lzUmVkaXJlY3RlZDsKKyAgICBlbmNvZGVyIDw8IG1fdXNlZExlZ2FjeVRMUzsK
ICAgICBlbmNvZGVyIDw8IG1faXNSYW5nZVJlcXVlc3RlZDsKIH0KIApAQCAtMzEzLDggKzMxOCwx
MCBAQCBib29sIFJlc291cmNlUmVzcG9uc2VCYXNlOjpkZWNvZGUoRGVjb2RlCiAgICAgLy8gVGhl
IG5ldHdvcmtMb2FkTWV0cmljcyBpbmZvIGlzIG9ubHkgc2VuZCBvdmVyIElQQyBhbmQgbm90IHN0
b3JlZCBpbiBkaXNrIGNhY2hlLgogICAgIGlmIChEZWNvZGVyOjppc0lQQ0RlY29kZXIgJiYgIWRl
Y29kZXIuZGVjb2RlKHJlc3BvbnNlLm1fbmV0d29ya0xvYWRNZXRyaWNzKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzcG9uc2UubV9odHRwU3RhdHVz
Q29kZSkpCisgICAgaW50IGh0dHBTdGF0dXNDb2RlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
aHR0cFN0YXR1c0NvZGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmVzcG9uc2UubV9o
dHRwU3RhdHVzQ29kZSA9IGh0dHBTdGF0dXNDb2RlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVzcG9uc2UubV9jZXJ0aWZpY2F0ZUluZm8pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocmVzcG9uc2UubV9zb3VyY2UpKQpAQCAtMzI4LDYgKzMz
NSwxMiBAQCBib29sIFJlc291cmNlUmVzcG9uc2VCYXNlOjpkZWNvZGUoRGVjb2RlCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICByZXNwb25zZS5tX2lzUmVkaXJlY3RlZCA9IGlzUmVkaXJlY3Rl
ZDsKIAorICAgIE9wdGlvbmFsPFVzZWRMZWdhY3lUTFM+IHVzZWRMZWdhY3lUTFM7CisgICAgZGVj
b2RlciA+PiB1c2VkTGVnYWN5VExTOworICAgIGlmICghdXNlZExlZ2FjeVRMUykKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIHJlc3BvbnNlLm1fdXNlZExlZ2FjeVRMUyA9ICp1c2VkTGVnYWN5
VExTOworCiAgICAgYm9vbCBpc1JhbmdlUmVxdWVzdGVkID0gZmFsc2U7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShpc1JhbmdlUmVxdWVzdGVkKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRl
eDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI1NTcwOSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjkgQEAKKzIwMjAtMDItMDQgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNYWtlIFdLV2ViVmlldy5f
bmVnb3RpYXRlZExlZ2FjeVRMUyBhY2N1cmF0ZSB3aGVuIGxvYWRpbmcgbWFpbiByZXNvdW9yY2Ug
ZnJvbSBuZXR3b3JrIG9yIGNhY2hlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDcyMDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbiBQYWdlTG9hZFN0YXRlOjpkaWRDb21taXRMb2FkLCBJIHdhcyByZXNl
dHRpbmcgdGhlIHZhbHVlIG9mIF9uZWdvdGlhdGVkTGVnYWN5VExTIHRvIGZhbHNlLgorICAgICAg
ICBUaGF0IGNyZWF0ZWQgYSByYWNlIGNvbmRpdGlvbiB3aGVuIGxvYWRpbmcgdGhlIG1haW4gcmVz
b3VyY2UgYmVjYXVzZSB0aGUgTmV0d29ya1Byb2Nlc3Mgd291bGQKKyAgICAgICAgbWVzc2FnZSB0
aGUgVUlQcm9jZXNzIHNldHRpbmcgX25lZ290aWF0ZWRMZWdhY3lUTFMgdG8gZmFsc2UsIHdoaWxl
IHRoZSBOZXR3b3JrUHJvY2VzcyB3b3VsZAorICAgICAgICBtZXNzYWdlIHRoZSBXZWJQcm9jZXNz
IHdoaWNoIHdvdWxkIG1lc3NhZ2UgdGhlIFVJUHJvY2VzcyB0byBjYWxsIFBhZ2VMb2FkU3RhdGU6
OmRpZENvbW1pdExvYWQKKyAgICAgICAgd2hpY2ggd291bGQgcmVzZXQgaXQgdG8gZmFsc2UuICBO
b3cgaXQgcmVzZXRzIGl0IHRvIHRoZSBjb3JyZWN0IHZhbHVlLCB3aGF0ZXZlciBpdCBpcy4KKwor
ICAgICAgICBVcGRhdGluZyB0aGUgUmVzb3VyY2VSZXNwb25zZUJhc2Ugc2VyaWFsaXphdGlvbiBj
b2RlIGhhcyB0aGUgZGVzaXJhYmxlIHNpZGUgZWZmZWN0IHRoYXQgdGhlIGRpc2sKKyAgICAgICAg
Y2FjaGUgd2lsbCByZW1lbWJlciB3aGV0aGVyIGxlZ2FjeSBUTFMgd2FzIHVzZWQgdG8gZmV0Y2gg
ZWFjaCByZXNvdXJjZS4gIFRoaXMgd2lsbCBtYWtlIGl0IHNvCisgICAgICAgIF9uZWdvdGlhdGVk
TGVnYWN5VExTIGlzIHRydWUgaWYgd2UgcmVhZCBjb250ZW50IGZyb20gdGhlIGRpc2sgY2FjaGUg
dGhhdCB3YXMgb3JpZ2luYWxseSBmZXRjaGVkCisgICAgICAgIHVzaW5nIGxlZ2FjeSBUTFMuCisK
KyAgICAgICAgSW4gb3JkZXIgdG8gbm90IGluY3JlYXNlIHRoZSBtZW1vcnkgZm9vdHByaW50IG9m
IFJlc291cmNlUmVzcG9uc2UsIEkgY2hhbmdlZCBtX2h0dHBTdGF0dXNDb2RlIGZyb20KKyAgICAg
ICAgYW4gaW50IHRvIGEgc2hvcnQuICBJdCBqdXN0IG5lZWRzIHRvIGJlIGFibGUgdG8gY292ZXIg
dGhlIHZhbHVlcyAwLTYwMCBvciBzbywgd2hpY2ggcmVhbGx5IG9ubHkgbmVlZHMgMTAgYml0cy4K
KworICAgICAgICBDb3ZlcmVkIGJ5IG5ldyBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrRGF0YVRhc2s6Om5lZ290aWF0ZWRMZWdhY3lUTFMgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrRGF0YVRhc2tDbGllbnQ6Om5lZ290aWF0ZWRMZWdhY3lUTFMgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tCbG9iOjpkaXNwYXRjaERpZFJlY2Vp
dmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6Om5vdGlmeURpZFJlY2VpdmVSZXNwb25zZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjp0aHJvdHRsZURlbGF5Q29tcGxldGVkKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6Om5lZ290aWF0ZWRMZWdhY3lUTFMgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvUGluZ0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpQaW5nTG9hZDo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06Cisg
ICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOmRhdGFUYXNrOmRp
ZFJlY2VpdmVSZXNwb25zZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrRGF0YVRhc2tDdXJsOjppbnZva2VEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlBhZ2VMb2FkU3RhdGU6OmRpZENvbW1pdExvYWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdl
TG9hZFN0YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZENvbW1pdExvYWRG
b3JGcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRDb21taXRMb2FkKToKKwogMjAyMC0wMi0wNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBNYWMgQ01ha2UgYnVpbGQKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
T1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAJKHJldmlzaW9uIDI1NTcwOCkKKysrIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVj
a2VyOjpkaWRSZWMKICAgICBtX25ldHdvcmtQcm9jZXNzLT5hdXRoZW50aWNhdGlvbk1hbmFnZXIo
KS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UobV9wYXJhbWV0ZXJzLnNlc3Npb25J
RCwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELCBtX3BhcmFtZXRlcnMudG9wT3JpZ2luID8g
Jm1fcGFyYW1ldGVycy50b3BPcmlnaW4tPmRhdGEoKSA6IG51bGxwdHIsIGNoYWxsZW5nZSwgbmVn
b3RpYXRlZExlZ2FjeVRMUywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lk
IE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYm
IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIE5l
Z290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9u
c2UiKTsKIApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1By
ZWZsaWdodENoZWNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCShyZXZpc2lvbiAyNTU3MDgpCisrKyBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
dm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVy
JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0
aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7
CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFs
OwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikg
ZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAg
ICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90
YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAJKHJldmlzaW9uIDI1NTcwOCkKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTcsNyArOTcsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFzazo6c2NoZWR1bGVG
YWlsdXJlKEZhCiAgICAgbV9mYWlsdXJlVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CiB9CiAKLXZv
aWQgTmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYm
IHJlc3BvbnNlLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIE5ldHdvcmtEYXRhVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9u
c2UmJiByZXNwb25zZSwgTmVnb3RpYXRlZExlZ2FjeVRMUyBuZWdvdGlhdGVkTGVnYWN5VExTLCBS
ZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYg
KHJlc3BvbnNlLmlzSFRUUDA5KCkpIHsKICAgICAgICAgYXV0byB1cmwgPSByZXNwb25zZS51cmwo
KTsKQEAgLTExMSwxNyArMTExLDExIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZl
UmVzcG9uc2UKICAgICAgICAgfQogICAgIH0KICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1f
Y2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShX
VEZNb3ZlKHJlc3BvbnNlKSwgbmVnb3RpYXRlZExlZ2FjeVRMUywgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogICAgIGVsc2UKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0
aW9uOjpJZ25vcmUpOwogfQogCi12b2lkIE5ldHdvcmtEYXRhVGFzazo6bmVnb3RpYXRlZExlZ2Fj
eVRMUygpIGNvbnN0Ci17Ci0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+bmVn
b3RpYXRlZExlZ2FjeVRMUygpOwotfQotCiBib29sIE5ldHdvcmtEYXRhVGFzazo6c2hvdWxkQ2Fw
dHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9jbGll
bnQgPyBtX2NsaWVudC0+c2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkgOiBm
YWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNr
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0
YVRhc2suaAkocmV2aXNpb24gMjU1NzA4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrRGF0YVRhc2suaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCBjbGFz
cyBOZXR3b3JrRGF0YVRhc2tDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxs
UGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9u
SGFuZGxlciYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVy
JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJv
cihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xv
YWRNZXRyaWNzJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0
b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSA9IDA7CkBA
IC03MCw3ICs3MCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2Fubm90U2hvd1VSTCgp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2FzQmxvY2tlZEJ5UmVzdHJpY3Rpb25zKCkgPSAwOwog
Ci0gICAgdmlydHVhbCB2b2lkIG5lZ290aWF0ZWRMZWdhY3lUTFMoKSBjb25zdCB7IH0KICAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCkBAIC05Miw4ICs5MSw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlk
YXRlQW5kQ2FuY2VsKCkgPSAwOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpOwotICAg
IHZvaWQgbmVnb3RpYXRlZExlZ2FjeVRMUygpIGNvbnN0OworICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywg
UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICBib29sIHNob3VsZENhcHR1cmVFeHRy
YU5ldHdvcmtMb2FkTWV0cmljcygpIGNvbnN0OwogCiAgICAgZW51bSBjbGFzcyBTdGF0ZSB7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFU
YXNrQmxvYi5jcHAJKHJldmlzaW9uIDI1NTcwOCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5MCw3ICsy
OTAsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRpc3BhdGNoRGlkUmVjCiAgICAgICAg
IGJyZWFrOwogICAgIH0KIAotICAgIGRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNl
KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBlcnJvckNv
ZGVdKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIHsKKyAgICBkaWRSZWNlaXZlUmVzcG9uc2Uo
V1RGTW92ZShyZXNwb25zZSksIE5lZ290aWF0ZWRMZWdhY3lUTFM6Ok5vLCBbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGVycm9yQ29kZV0oUG9saWN5QWN0aW9u
IHBvbGljeUFjdGlvbikgewogICAgICAgICBMT0coTmV0d29ya1Nlc3Npb24sICIlcCAtIE5ldHdv
cmtEYXRhVGFza0Jsb2I6OmRpZFJlY2VpdmVSZXNwb25zZSBjb21wbGV0aW9uSGFuZGxlciAoJXUp
IiwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBvbGljeUFjdGlvbikpOwogCiAgICAgICAg
IGlmIChtX3N0YXRlID09IFN0YXRlOjpDYW5jZWxpbmcgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6Q29t
cGxldGVkKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkLmNwcAkocmV2aXNpb24gMjU1NzA4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNiwxMiArMjA2LDcgQEAgdm9p
ZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShBdQogICAgICAgICBtX25ldHdvcmtQ
cm9jZXNzLT5hdXRoZW50aWNhdGlvbk1hbmFnZXIoKS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UobV90YXNrLT5zZXNzaW9uSUQoKSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlE
LCBtX3BhcmFtZXRlcnMudG9wT3JpZ2luID8gJm1fcGFyYW1ldGVycy50b3BPcmlnaW4tPmRhdGEo
KSA6IG51bGxwdHIsIGNoYWxsZW5nZSwgbmVnb3RpYXRlZExlZ2FjeVRMUywgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtMb2FkOjpuZWdvdGlhdGVkTGVnYWN5
VExTKCkgY29uc3QKLXsKLSAgICBtX25ldHdvcmtQcm9jZXNzLT5hdXRoZW50aWNhdGlvbk1hbmFn
ZXIoKS5uZWdvdGlhdGVkTGVnYWN5VExTKG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCk7Ci19
Ci0KLXZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNl
JiYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNl
JiYgcmVzcG9uc2UsIE5lZ290aWF0ZWRMZWdhY3lUTFMgbmVnb3RpYXRlZExlZ2FjeVRMUywgUmVz
cG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgQVNTRVJUKCFtX3Rocm90dGxlKTsKQEAgLTIyNiwx
NiArMjIxLDE5IEBAIHZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXMKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG5vdGlmeURpZFJlY2VpdmVSZXNwb25zZShXVEZN
b3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGlmIChuZWdv
dGlhdGVkTGVnYWN5VExTID09IE5lZ290aWF0ZWRMZWdhY3lUTFM6OlllcykKKyAgICAgICAgbV9u
ZXR3b3JrUHJvY2Vzcy0+YXV0aGVudGljYXRpb25NYW5hZ2VyKCkubmVnb3RpYXRlZExlZ2FjeVRM
UyhtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQpOworICAgIAorICAgIG5vdGlmeURpZFJlY2Vp
dmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgbmVnb3RpYXRlZExlZ2FjeVRMUywgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtMb2FkOjpub3RpZnlEaWRS
ZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNwb25zZUNvbXBs
ZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtMb2FkOjpub3Rp
ZnlEaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlh
dGVkTGVnYWN5VExTIG5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogCiAgICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0
d29yayk7CiAgICAgaWYgKG1fcGFyYW1ldGVycy5uZWVkc0NlcnRpZmljYXRlSW5mbykKLSAgICAg
ICAgcmVzcG9uc2UuaW5jbHVkZUNlcnRpZmljYXRlSW5mbygpOworICAgICAgICByZXNwb25zZS5p
bmNsdWRlQ2VydGlmaWNhdGVJbmZvKG5lZ290aWF0ZWRMZWdhY3lUTFMgPT0gTmVnb3RpYXRlZExl
Z2FjeVRMUzo6WWVzID8gVXNlZExlZ2FjeVRMUzo6WWVzIDogVXNlZExlZ2FjeVRMUzo6Tm8pOwog
CiAgICAgbV9jbGllbnQuZ2V0KCkuZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2Up
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CkBAIC0yNjUsNyArMjYzLDcgQEAgdm9p
ZCBOZXR3b3JrTG9hZDo6dGhyb3R0bGVEZWxheUNvbXBsZXRlZAogCiAgICAgYXV0byB0aHJvdHRs
ZSA9IFdURk1vdmUobV90aHJvdHRsZSk7CiAKLSAgICBub3RpZnlEaWRSZWNlaXZlUmVzcG9uc2Uo
V1RGTW92ZSh0aHJvdHRsZS0+cmVzcG9uc2UpLCBXVEZNb3ZlKHRocm90dGxlLT5yZXNwb25zZUNv
bXBsZXRpb25IYW5kbGVyKSk7CisgICAgbm90aWZ5RGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUo
dGhyb3R0bGUtPnJlc3BvbnNlKSwgTmVnb3RpYXRlZExlZ2FjeVRMUzo6Tm8sIFdURk1vdmUodGhy
b3R0bGUtPnJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrTG9h
ZDo6ZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0
ZXNFeHBlY3RlZFRvU2VuZCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkLmgJKHJldmlzaW9uIDI1NTcwOCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsMTYgKzc0LDE1IEBAIHBy
aXZhdGU6CiAgICAgLy8gTmV0d29ya0RhdGFUYXNrQ2xpZW50CiAgICAgdm9pZCB3aWxsUGVyZm9y
bUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAg
IHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBm
aW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CisgICAgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVn
YWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9p
ZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29u
c3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5k
RGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVk
VG9TZW5kKSBmaW5hbDsKICAgICB2b2lkIHdhc0Jsb2NrZWQoKSBmaW5hbDsKICAgICB2b2lkIGNh
bm5vdFNob3dVUkwoKSBmaW5hbDsKICAgICB2b2lkIHdhc0Jsb2NrZWRCeVJlc3RyaWN0aW9ucygp
IGZpbmFsOwotICAgIHZvaWQgbmVnb3RpYXRlZExlZ2FjeVRMUygpIGNvbnN0IGZpbmFsOwogCi0g
ICAgdm9pZCBub3RpZnlEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpOworICAgIHZvaWQgbm90aWZ5RGlkUmVj
ZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2Fj
eVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIHRocm90dGxlRGVs
YXlDb21wbGV0ZWQoKTsKIAogICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8TmV0d29ya0xvYWRD
bGllbnQ+IG1fY2xpZW50OwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyNTU3MDgpCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC01NSw2ICs1NSw4IEBAIGNsYXNzIE5ldHdvcmtMb2FkQ2hlY2tlcjsKIGNsYXNz
IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s7CiBjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb247CiAK
K2VudW0gY2xhc3MgTmVnb3RpYXRlZExlZ2FjeVRMUyA6IGJvb2w7CisKIHN0cnVjdCBSZXNvdXJj
ZUxvYWRJbmZvOwogCiBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCShyZXZpc2lvbiAyNTU3MDgpCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTYwLDcgKzE2MCw3IEBAIHZvaWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UoQXV0aGUK
ICAgICBkaWRGaW5pc2goUmVzb3VyY2VFcnJvciB7IFN0cmluZygpLCAwLCBjdXJyZW50VVJMKCks
ICJGYWlsZWQgSFRUUCBhdXRoZW50aWNhdGlvbiJfcywgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNj
ZXNzQ29udHJvbCB9KTsKIH0KIAotdm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJl
c291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291
cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21w
bGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZSAtIGh0dHBTdGF0dXNDb2RlOiAlZCIsIHJlc3Bv
bnNlLmh0dHBTdGF0dXNDb2RlKCkpOwogICAgIGF1dG8gd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigq
dGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCShyZXZp
c2lvbiAyNTU3MDgpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgd2ls
bFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5h
bDsKICAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRs
ZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOworICAgIHZv
aWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3Rp
YXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwog
ICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQg
ZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNF
eHBlY3RlZFRvU2VuZCkgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaAkocmV2aXNpb24gMjU1
NzA4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
dG9yYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw3ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAg
c2l6ZV90IGFwcHJveGltYXRlU2l6ZSgpIGNvbnN0OwogCiAgICAgLy8gSW5jcmVtZW50aW5nIHRo
aXMgbnVtYmVyIHdpbGwgZGVsZXRlIGFsbCBleGlzdGluZyBjYWNoZSBjb250ZW50IGZvciBldmVy
eW9uZS4gRG8geW91IHJlYWxseSBuZWVkIHRvIGRvIGl0PwotICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCB2ZXJzaW9uID0gMTU7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHZlcnNpb24gPSAx
NjsKIAogICAgIFN0cmluZyBiYXNlUGF0aElzb2xhdGVkQ29weSgpIGNvbnN0OwogICAgIFN0cmlu
ZyB2ZXJzaW9uUGF0aCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAkocmV2aXNpb24g
MjU1NzA4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0
YVRhc2tDb2NvYS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3Rh
bEJ5dGVzRXhwZWN0ZWRUb1NlbmQpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJD
b3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFs
bGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9y
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9h
ZE1ldHJpY3MmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVn
YWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CiAKICAgICB2b2lkIHdpbGxQZXJm
b3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJik7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EubW0JKHJldmlzaW9uIDI1NTcwOCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0JKHdvcmtpbmcgY29weSkK
QEAgLTM3MywxMCArMzczLDEwIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2Vp
dmVEYXQKICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKFdURk1vdmUoZGF0YSkpOwog
fQogCi12b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBXZWJLaXQ6OlJlc3BvbnNlQ29tcGxldGlv
bkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6
OmRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2Us
IE5lZ290aWF0ZWRMZWdhY3lUTFMgbmVnb3RpYXRlZExlZ2FjeVRMUywgV2ViS2l0OjpSZXNwb25z
ZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgRU1JVF9TSUdO
UE9TVChtX3Rhc2ssICJyZWNlaXZlZCByZXNwb25zZSBoZWFkZXJzIik7Ci0gICAgTmV0d29ya0Rh
dGFUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKKyAgICBOZXR3b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVSZXNwb25z
ZShXVEZNb3ZlKHJlc3BvbnNlKSwgbmVnb3RpYXRlZExlZ2FjeVRMUywgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjp3aWxsUGVyZm9y
bUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNw
b25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVkaXJlY3RDb21wbGV0
aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQko
cmV2aXNpb24gMjU1NzA4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrU2Vzc2lvbkNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04MTgsMjQgKzgxOCwyMiBA
QCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3NpCiAgICAgaWYgKGF1dG8q
IG5ldHdvcmtEYXRhVGFzayA9IFtzZWxmIGV4aXN0aW5nVGFzazpkYXRhVGFza10pIHsKICAgICAg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgICAgICBib29sIG5lZ290aWF0ZWRM
ZWdhY3lUTFMgPSBmYWxzZTsKKyAgICAgICAgTmVnb3RpYXRlZExlZ2FjeVRMUyBuZWdvdGlhdGVk
TGVnYWN5VExTID0gTmVnb3RpYXRlZExlZ2FjeVRMUzo6Tm87CiAjaWYgSEFWRShUTFNfUFJPVE9D
T0xfVkVSU0lPTl9UKQogICAgICAgICBOU1VSTFNlc3Npb25UYXNrVHJhbnNhY3Rpb25NZXRyaWNz
ICptZXRyaWNzID0gZGF0YVRhc2suX2luY29tcGxldGVUYXNrTWV0cmljcy50cmFuc2FjdGlvbk1l
dHJpY3MubGFzdE9iamVjdDsKICAgICAgICAgYXV0byB0bHNWZXJzaW9uID0gKHRsc19wcm90b2Nv
bF92ZXJzaW9uX3QpbWV0cmljcy5uZWdvdGlhdGVkVExTUHJvdG9jb2xWZXJzaW9uLnVuc2lnbmVk
U2hvcnRWYWx1ZTsKICAgICAgICAgaWYgKHRsc1ZlcnNpb24gPT0gdGxzX3Byb3RvY29sX3ZlcnNp
b25fVExTdjEwIHx8IHRsc1ZlcnNpb24gPT0gdGxzX3Byb3RvY29sX3ZlcnNpb25fVExTdjExKQot
ICAgICAgICAgICAgbmVnb3RpYXRlZExlZ2FjeVRMUyA9IHRydWU7CisgICAgICAgICAgICBuZWdv
dGlhdGVkTGVnYWN5VExTID0gTmVnb3RpYXRlZExlZ2FjeVRMUzo6WWVzOwogICAgICAgICBVTlVT
RURfUEFSQU0obWV0cmljcyk7CiAjZWxzZSAvLyBXZSBkbyBub3QgbmVlZCB0byBjaGVjayBfVExT
TmVnb3RpYXRlZFByb3RvY29sVmVyc2lvbiBpZiB3ZSBoYXZlIG1ldHJpY3MubmVnb3RpYXRlZFRM
U1Byb3RvY29sVmVyc2lvbiBiZWNhdXNlIGl0IHdvcmtzIGF0IHJlc3BvbnNlIHRpbWUgZXZlbiBi
ZWZvcmUgcmRhcjovL3Byb2JsZW0vNTY1MjI2MDEKICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgaWYgKFtkYXRhVGFzayByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKF9UTFNOZWdvdGlhdGVkUHJvdG9jb2xWZXJzaW9uKV0pIHsKICAgICAgICAg
ICAgIFNTTFByb3RvY29sIHRsc1ZlcnNpb24gPSBbZGF0YVRhc2sgX1RMU05lZ290aWF0ZWRQcm90
b2NvbFZlcnNpb25dOwogICAgICAgICAgICAgaWYgKHRsc1ZlcnNpb24gPT0ga1RMU1Byb3RvY29s
MTEgfHwgdGxzVmVyc2lvbiA9PSBrVExTUHJvdG9jb2wxKQotICAgICAgICAgICAgICAgIG5lZ290
aWF0ZWRMZWdhY3lUTFMgPSB0cnVlOworICAgICAgICAgICAgICAgIG5lZ290aWF0ZWRMZWdhY3lU
TFMgPSBOZWdvdGlhdGVkTGVnYWN5VExTOjpZZXM7CiAgICAgICAgIH0KICAgICAgICAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAjZW5kaWYKLSAgICAgICAgaWYgKG5lZ290aWF0
ZWRMZWdhY3lUTFMpCi0gICAgICAgICAgICBuZXR3b3JrRGF0YVRhc2stPm5lZ290aWF0ZWRMZWdh
Y3lUTFMoKTsKICAgICAgICAgCiAgICAgICAgIC8vIEF2b2lkIE1JTUUgdHlwZSBzbmlmZmluZyBp
ZiB0aGUgcmVzcG9uc2UgY29tZXMgYmFjayBhcyAzMDQgTm90IE1vZGlmaWVkLgogICAgICAgICBp
bnQgc3RhdHVzQ29kZSA9IFtyZXNwb25zZSBpc0tpbmRPZkNsYXNzOk5TSFRUUFVSTFJlc3BvbnNl
LmNsYXNzXSA/IFsoTlNIVFRQVVJMUmVzcG9uc2UgKilyZXNwb25zZSBzdGF0dXNDb2RlXSA6IDA7
CkBAIC04NTQsNyArODUyLDcgQEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilz
ZXNzaQogICAgICAgICBjb3B5VGltaW5nRGF0YShbZGF0YVRhc2sgX3RpbWluZ0RhdGFdLCByZXNv
dXJjZVJlc3BvbnNlLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoKSk7CiAKICAgICAgICAg
YXV0byBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBCbG9ja19jb3B5KGNvbXBsZXRpb25IYW5kbGVy
KTsKLSAgICAgICAgbmV0d29ya0RhdGFUYXNrLT5kaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShy
ZXNvdXJjZVJlc3BvbnNlKSwgW2NvbXBsZXRpb25IYW5kbGVyQ29weSwgdGFza0lkZW50aWZpZXJd
KFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIHsKKyAgICAgICAgbmV0d29ya0Rh
dGFUYXNrLT5kaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShyZXNvdXJjZVJlc3BvbnNlKSwgbmVn
b3RpYXRlZExlZ2FjeVRMUywgW2NvbXBsZXRpb25IYW5kbGVyQ29weSwgdGFza0lkZW50aWZpZXJd
KFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIHsKICNpZiAhTE9HX0RJU0FCTEVE
CiAgICAgICAgICAgICBMT0coTmV0d29ya1Nlc3Npb24sICIlbGx1IGRpZFJlY2VpdmVSZXNwb25z
ZSBjb21wbGV0aW9uSGFuZGxlciAoJWQpIiwgdGFza0lkZW50aWZpZXIsIHBvbGljeUFjdGlvbik7
CiAjZWxzZQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtE
YXRhVGFza0N1cmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAkocmV2aXNpb24gMjU1NzA4KQorKysgU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMjQsNyArMjI0LDcgQEAgYm9vbCBOZXR3b3JrRGF0YVRhc2tDdXJs
OjpzaG91bGRSZWRpcmVjdAogCiB2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6Omludm9rZURpZFJl
Y2VpdmVSZXNwb25zZSgpCiB7Ci0gICAgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9u
c2UobV9yZXNwb25zZSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKFBv
bGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIHsKKyAgICBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3Vy
Y2VSZXNwb25zZShtX3Jlc3BvbnNlKSwgTmVnb3RpYXRlZExlZ2FjeVRMUzo6Tm8sIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24p
IHsKICAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNhbmNlbGluZyB8fCBtX3N0YXRlID09
IFN0YXRlOjpDb21wbGV0ZWQpCiAgICAgICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNr
U291cC5jcHAJKHJldmlzaW9uIDI1NTcwOCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc4LDcg
KzM3OCw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlzcGF0Y2hEaWRSZWMKICAgICBk
ZXByZWNhdGVkUmVzcG9uc2VNZXRyaWNzLnJlcXVlc3RTdGFydCA9IG1fbmV0d29ya0xvYWRNZXRy
aWNzLnJlcXVlc3RTdGFydDsKICAgICBkZXByZWNhdGVkUmVzcG9uc2VNZXRyaWNzLnJlc3BvbnNl
U3RhcnQgPSBtX25ldHdvcmtMb2FkTWV0cmljcy5yZXNwb25zZVN0YXJ0OwogCi0gICAgZGlkUmVj
ZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UobV9yZXNwb25zZSksIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIHsKKyAg
ICBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZShtX3Jlc3BvbnNlKSwgTmVnb3Rp
YXRlZExlZ2FjeVRMUzo6Tm8sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyld
KFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIHsKICAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3Rh
dGU6OkNhbmNlbGluZyB8fCBtX3N0YXRlID09IFN0YXRlOjpDb21wbGV0ZWQpIHsKICAgICAgICAg
ICAgIGNsZWFyUmVxdWVzdCgpOwogICAgICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5jcHAJKHJldmlzaW9uIDI1NTcwOCkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMTcsNyArMzE3LDcgQEAgdm9pZCBQYWdlTG9hZFN0YXRlOjpkaWRGYWlsUHJvdmlzaW9uYWxM
bwogICAgIG1fdW5jb21taXR0ZWRTdGF0ZS51bnJlYWNoYWJsZVVSTCA9IG1fbGFzdFVucmVhY2hh
YmxlVVJMOwogfQogCi12b2lkIFBhZ2VMb2FkU3RhdGU6OmRpZENvbW1pdExvYWQoY29uc3QgVHJh
bnNhY3Rpb246OlRva2VuJiB0b2tlbiwgV2ViQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUlu
Zm8sIGJvb2wgaGFzSW5zZWN1cmVDb250ZW50KQordm9pZCBQYWdlTG9hZFN0YXRlOjpkaWRDb21t
aXRMb2FkKGNvbnN0IFRyYW5zYWN0aW9uOjpUb2tlbiYgdG9rZW4sIFdlYkNlcnRpZmljYXRlSW5m
byYgY2VydGlmaWNhdGVJbmZvLCBib29sIGhhc0luc2VjdXJlQ29udGVudCwgYm9vbCB1c2VkTGVn
YWN5VExTKQogewogICAgIEFTU0VSVF9VTlVTRUQodG9rZW4sICZ0b2tlbi5tX3BhZ2VMb2FkU3Rh
dGUgPT0gdGhpcyk7CiAgICAgQVNTRVJUKG1fdW5jb21taXR0ZWRTdGF0ZS5zdGF0ZSA9PSBTdGF0
ZTo6UHJvdmlzaW9uYWwpOwpAQCAtMzI4LDcgKzMyOCw3IEBAIHZvaWQgUGFnZUxvYWRTdGF0ZTo6
ZGlkQ29tbWl0TG9hZChjb25zdCAKIAogICAgIG1fdW5jb21taXR0ZWRTdGF0ZS51cmwgPSBtX3Vu
Y29tbWl0dGVkU3RhdGUucHJvdmlzaW9uYWxVUkw7CiAgICAgbV91bmNvbW1pdHRlZFN0YXRlLnBy
b3Zpc2lvbmFsVVJMID0gU3RyaW5nKCk7Ci0gICAgbV91bmNvbW1pdHRlZFN0YXRlLm5lZ290aWF0
ZWRMZWdhY3lUTFMgPSBmYWxzZTsKKyAgICBtX3VuY29tbWl0dGVkU3RhdGUubmVnb3RpYXRlZExl
Z2FjeVRMUyA9IHVzZWRMZWdhY3lUTFM7CiAKICAgICBtX3VuY29tbWl0dGVkU3RhdGUudGl0bGUg
PSBTdHJpbmcoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3Rh
dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRl
LmgJKHJldmlzaW9uIDI1NTcwOCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2Fk
U3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTYzLDcgKzE2Myw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChjb25zdCBUcmFu
c2FjdGlvbjo6VG9rZW4mLCBjb25zdCBTdHJpbmcmIHVybCk7CiAgICAgdm9pZCBkaWRGYWlsUHJv
dmlzaW9uYWxMb2FkKGNvbnN0IFRyYW5zYWN0aW9uOjpUb2tlbiYpOwogCi0gICAgdm9pZCBkaWRD
b21taXRMb2FkKGNvbnN0IFRyYW5zYWN0aW9uOjpUb2tlbiYsIFdlYkNlcnRpZmljYXRlSW5mbyYs
IGJvb2wgaGFzSW5zZWN1cmVDb250ZW50KTsKKyAgICB2b2lkIGRpZENvbW1pdExvYWQoY29uc3Qg
VHJhbnNhY3Rpb246OlRva2VuJiwgV2ViQ2VydGlmaWNhdGVJbmZvJiwgYm9vbCBoYXNJbnNlY3Vy
ZUNvbnRlbnQsIGJvb2wgdXNlZExlZ2FjeVRMUyk7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkKGNv
bnN0IFRyYW5zYWN0aW9uOjpUb2tlbiYpOwogICAgIHZvaWQgZGlkRmFpbExvYWQoY29uc3QgVHJh
bnNhY3Rpb246OlRva2VuJik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zp
c2lvbmFsUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI1NTcwOCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjY0LDcgKzI2NCw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZEZhaWxQcm92
aXMKICAgICBtX3BhZ2UuZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKG1fcHJv
Y2Vzcy5jb3B5UmVmKCksIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVTZWN1cml0eU9yaWdpbiksIG5h
dmlnYXRpb25JRCwgcHJvdmlzaW9uYWxVUkwsIGVycm9yLCB3aWxsQ29udGludWVMb2FkaW5nLCB1
c2VyRGF0YSk7IC8vIE1heSBkZWxldGUgfHRoaXN8LgogfQogCi12b2lkIFByb3Zpc2lvbmFsUGFn
ZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhh
c0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2Vi
Q29yZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgY29udGFpbnNQbHVn
aW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRI
YXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgUHJvdmlz
aW9uYWxQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29s
IGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBj
b25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCB1c2Vk
TGVnYWN5VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6
Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2Vy
RGF0YSYgdXNlckRhdGEpCiB7CiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmln
YXRpb25JRCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI3NCw3ICsyNzQsNyBAQCB2b2lkIFByb3Zp
c2lvbmFsUGFnZVByb3h5OjpkaWRDb21taXRMb2FkCiAgICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX3dlYlBhZ2VJRCk7CiAKICAgICBtX3dhc0NvbW1pdHRlZCA9IHRydWU7Ci0gICAgbV9wYWdl
LmNvbW1pdFByb3Zpc2lvbmFsUGFnZShmcmFtZUlELCBuYXZpZ2F0aW9uSUQsIG1pbWVUeXBlLCBm
cmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgZnJhbWVMb2FkVHlwZSwgY2VydGlmaWNhdGVJ
bmZvLCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIHVz
ZXJEYXRhKTsgLy8gV2lsbCBkZWxldGUgfHRoaXN8LgorICAgIG1fcGFnZS5jb21taXRQcm92aXNp
b25hbFBhZ2UoZnJhbWVJRCwgbmF2aWdhdGlvbklELCBtaW1lVHlwZSwgZnJhbWVIYXNDdXN0b21D
b250ZW50UHJvdmlkZXIsIGZyYW1lTG9hZFR5cGUsIGNlcnRpZmljYXRlSW5mbywgdXNlZExlZ2Fj
eVRMUywgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCB1
c2VyRGF0YSk7IC8vIFdpbGwgZGVsZXRlIHx0aGlzfC4KIH0KIAogdm9pZCBQcm92aXNpb25hbFBh
Z2VQcm94eTo6ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEoY29uc3QgV2ViTmF2aWdhdGlv
bkRhdGFTdG9yZSYgc3RvcmUsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCShyZXZpc2lvbiAy
NTU3MDgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNyArMTIyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRp
ZFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0cmluZywgY29u
c3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTFN0cmluZywgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
KTsKICAgICB2b2lkIGRpZENyZWF0ZU1haW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIp
OwogICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMJiYsIFVSTCYmIHVucmVhY2hh
YmxlVVJMLCBjb25zdCBVc2VyRGF0YSYpOwotICAgIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1l
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50
MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mLCBib29s
IGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29u
dGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZv
aWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3Vz
dG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3Jl
OjpDZXJ0aWZpY2F0ZUluZm8mLCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wgY29udGFpbnNQbHVn
aW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRI
YXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBkaWRGYWlsUHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImLCBXZWJDb3JlOjpXaWxsQ29udGludWVMb2FkaW5nLCBjb25zdCBVc2VyRGF0YSYp
OwogICAgIHZvaWQgc3RhcnRVUkxTY2hlbWVUYXNrKFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYp
OwogICAgIHZvaWQgYmFja0ZvcndhcmRHb1RvSXRlbShjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2Fy
ZEl0ZW1JZGVudGlmaWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUmJiwgY29uc3QgV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzJik+JiYpOwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyNTU3MDgp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMTYxLDcgKzMxNjEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xp
Y3lEZWNpc2lvCiAgICAgc2VuZGVyLT5zZW5kKGFjdGlvbiwgbmF2aWdhdGlvbiA/IG5hdmlnYXRp
b24tPm5hdmlnYXRpb25JRCgpIDogMCwgZG93bmxvYWRJRCwgV1RGTW92ZSh3ZWJzaXRlUG9saWNp
ZXMpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmNvbW1pdFByb3Zpc2lvbmFsUGFnZShGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBm
cmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRl
SW5mbywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJ
bnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEm
IHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmNvbW1pdFByb3Zpc2lvbmFsUGFnZShGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBm
cmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRl
SW5mbywgYm9vbCB1c2VkTGVnYWN5VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9w
dGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250
ZW50LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgQVNTRVJUKG1fcHJvdmlzaW9u
YWxQYWdlKTsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJjb21taXRQcm92
aXNpb25hbFBhZ2U6IG5ld1BJRCA9ICVpIiwgbV9wcm92aXNpb25hbFBhZ2UtPnByb2Nlc3MoKS5w
cm9jZXNzSWRlbnRpZmllcigpKTsKQEAgLTMxOTUsNyArMzE5NSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojpjb21taXRQcm92aXNpb25hbFBhZ2UKICAgICBjb25zdCBhdXRvIG9sZFdlYlBhZ2VJRCA9
IG1fd2ViUGFnZUlEOwogICAgIHN3YXBUb1Byb3Zpc2lvbmFsUGFnZShzdGQ6OmV4Y2hhbmdlKG1f
cHJvdmlzaW9uYWxQYWdlLCBudWxscHRyKSk7CiAKLSAgICBkaWRDb21taXRMb2FkRm9yRnJhbWUo
ZnJhbWVJRCwgbmF2aWdhdGlvbklELCBtaW1lVHlwZSwgZnJhbWVIYXNDdXN0b21Db250ZW50UHJv
dmlkZXIsIGZyYW1lTG9hZFR5cGUsIGNlcnRpZmljYXRlSW5mbywgY29udGFpbnNQbHVnaW5Eb2N1
bWVudCwgZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCB1c2VyRGF0YSk7CisgICAgZGlkQ29tbWl0
TG9hZEZvckZyYW1lKGZyYW1lSUQsIG5hdmlnYXRpb25JRCwgbWltZVR5cGUsIGZyYW1lSGFzQ3Vz
dG9tQ29udGVudFByb3ZpZGVyLCBmcmFtZUxvYWRUeXBlLCBjZXJ0aWZpY2F0ZUluZm8sIHVzZWRM
ZWdhY3lUTFMsIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIGZvcmNlZEhhc0luc2VjdXJlQ29udGVu
dCwgdXNlckRhdGEpOwogCiAgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5kaWRDb21taXRQcm92
aXNpb25hbFBhZ2Uob2xkV2ViUGFnZUlELCBtX3dlYlBhZ2VJRCk7CiB9CkBAIC00NDgxLDcgKzQ0
ODEsNyBAQCBzdGF0aWMgT3B0aW9uU2V0PENyb3NzU2l0ZU5hdmlnYXRpb25EYXRhCiB9CiAjZW5k
aWYKIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZShGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBvcGFxdWVG
cmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRl
SW5mbywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxIYXNJbnNlY3VyZUNv
bnRlbnQ+IGhhc0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9p
ZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29s
IGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBvcGFxdWVGcmFtZUxvYWRU
eXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9v
bCB1c2VkTGVnYWN5VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPEhh
c0luc2VjdXJlQ29udGVudD4gaGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYgdXNl
ckRhdGEpCiB7CiAgICAgTE9HKExvYWRpbmcsICIoTG9hZGluZykgV2ViUGFnZVByb3h5ICUiIFBS
SXU2NCAiIGRpZENvbW1pdExvYWRGb3JGcmFtZSBpbiBuYXZpZ2F0aW9uICUiIFBSSXU2NCwgbV9p
ZGVudGlmaWVyLnRvVUludDY0KCksIG5hdmlnYXRpb25JRCk7CiAgICAgTE9HKEJhY2tGb3J3YXJk
LCAiKEJhY2svRm9yd2FyZCkgQWZ0ZXIgbG9hZCBjb21taXQsIGJhY2svZm9yd2FyZCBsaXN0IGlz
IG5vdzolcyIsIG1fYmFja0ZvcndhcmRMaXN0LT5sb2dnaW5nU3RyaW5nKCkpOwpAQCAtNDUyMyw3
ICs0NTIzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZQogICAg
IGJvb2wgbWFya1BhZ2VJbnNlY3VyZSA9IGhhc0luc2VjdXJlQ29udGVudCA/IGhhc0luc2VjdXJl
Q29udGVudC52YWx1ZSgpID09IEhhc0luc2VjdXJlQ29udGVudDo6WWVzIDogbV90cmVhdHNTSEEx
Q2VydGlmaWNhdGVzQXNJbnNlY3VyZSAmJiBjZXJ0aWZpY2F0ZUluZm8uY29udGFpbnNOb25Sb290
U0hBMVNpZ25lZENlcnRpZmljYXRlKCk7CiAKICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkp
IHsKLSAgICAgICAgbV9wYWdlTG9hZFN0YXRlLmRpZENvbW1pdExvYWQodHJhbnNhY3Rpb24sIHdl
YkNlcnRpZmljYXRlSW5mbywgbWFya1BhZ2VJbnNlY3VyZSk7CisgICAgICAgIG1fcGFnZUxvYWRT
dGF0ZS5kaWRDb21taXRMb2FkKHRyYW5zYWN0aW9uLCB3ZWJDZXJ0aWZpY2F0ZUluZm8sIG1hcmtQ
YWdlSW5zZWN1cmUsIHVzZWRMZWdhY3lUTFMpOwogICAgICAgICBtX3Nob3VsZFN1cHByZXNzTmV4
dEF1dG9tYXRpY05hdmlnYXRpb25TbmFwc2hvdCA9IGZhbHNlOwogICAgIH0gZWxzZSBpZiAobWFy
a1BhZ2VJbnNlY3VyZSkKICAgICAgICAgbV9wYWdlTG9hZFN0YXRlLmRpZERpc3BsYXlPclJ1bklu
c2VjdXJlQ29udGVudCh0cmFuc2FjdGlvbik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjU1NzA4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1ODcsNyArMTU4Nyw3IEBAIHB1
YmxpYzoKICNlbmRpZgogCiAgICAgUHJvdmlzaW9uYWxQYWdlUHJveHkqIHByb3Zpc2lvbmFsUGFn
ZVByb3h5KCkgY29uc3QgeyByZXR1cm4gbV9wcm92aXNpb25hbFBhZ2UuZ2V0KCk7IH0KLSAgICB2
b2lkIGNvbW1pdFByb3Zpc2lvbmFsUGFnZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1
c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29y
ZTo6Q2VydGlmaWNhdGVJbmZvJiwgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25h
bDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwg
Y29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGNvbW1pdFByb3Zpc2lvbmFsUGFnZShXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJh
bWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiwgYm9vbCB1c2VkTGVn
YWN5VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhh
c0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0
YSYpOwogCiAgICAgLy8gTG9naWMgc2hhcmVkIGJldHdlZW4gdGhlIFdlYlBhZ2VQcm94eSBhbmQg
dGhlIFByb3Zpc2lvbmFsUGFnZVByb3h5LgogICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExv
YWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMJiYsIFVSTCYmIHVucmVhY2hhYmxl
VVJMLCBjb25zdCBVc2VyRGF0YSYpOwpAQCAtMTczNyw3ICsxNzM3LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyKTsKICAgICB2b2lkIGRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmKTsKICAgICB2
b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFdlYkNvcmU6OldpbGxDb250aW51ZUxvYWRpbmcsIGNv
bnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBkaWRDb21taXRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1l
TG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYsIGJvb2wgY29udGFpbnNQ
bHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3Jj
ZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkaWRDb21t
aXRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50
UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmlj
YXRlSW5mbyYsIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50
LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJl
Q29udGVudCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9h
ZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBVc2VyRGF0
YSYpOwogICAgIHZvaWQgZGlkRmFpbExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYs
IGNvbnN0IFVzZXJEYXRhJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNTU3MDgpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAg
LTEyNiw3ICsxMjYsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIERpZENhbmNl
bENsaWVudFJlZGlyZWN0Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQp
CiAgICAgRGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwgdXJsKQogICAgIERpZEZh
aWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2lu
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFN0cmluZyBwcm92aXNpb25hbFVSTCwgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciBlcnJvciwgZW51bTpib29sIFdlYkNvcmU6OldpbGxDb250aW51ZUxvYWRp
bmcgd2lsbENvbnRpbnVlTG9hZGluZywgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKLSAgICBE
aWRDb21taXRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgU3RyaW5nIG1pbWVUeXBlLCBib29sIGhhc0N1c3RvbUNvbnRl
bnRQcm92aWRlciwgdWludDMyX3QgbG9hZFR5cGUsIFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyBj
ZXJ0aWZpY2F0ZUluZm8sIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2Vi
Q29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIFdlYktp
dDo6VXNlckRhdGEgdXNlckRhdGEpCisgICAgRGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFN0cmluZyBt
aW1lVHlwZSwgYm9vbCBoYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGxvYWRUeXBl
LCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvLCBib29sIHVzZWRMZWdh
Y3lUTFMsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFz
SW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIFdlYktpdDo6VXNlckRh
dGEgdXNlckRhdGEpCiAgICAgRGlkRmFpbExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yIGVycm9yLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIERpZEZpbmlzaERvY3Vt
ZW50TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkRmluaXNo
TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDI1NTcwOCkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU2MCw3ICs1NjAsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZENvCiAgICAgd2ViUGFnZS0+c2FuZGJveEV4dGVuc2lvblRyYWNrZXIoKS5kaWRD
b21taXRQcm92aXNpb25hbExvYWQobV9mcmFtZSk7CiAKICAgICAvLyBOb3RpZnkgdGhlIFVJUHJv
Y2Vzcy4KLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENvbW1p
dExvYWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIGRvY3VtZW50TG9hZGVyLm5hdmlnYXRp
b25JRCgpLCBkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fZnJhbWVIYXND
dXN0b21Db250ZW50UHJvdmlkZXIsIHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2ZyYW1lLT5jb3Jl
RnJhbWUoKS0+bG9hZGVyKCkubG9hZFR5cGUoKSksIHZhbHVlT3JDb21wdXRlKGRvY3VtZW50TG9h
ZGVyLnJlc3BvbnNlKCkuY2VydGlmaWNhdGVJbmZvKCksIFtdIHsgcmV0dXJuIENlcnRpZmljYXRl
SW5mbygpOyB9KSwgbV9mcmFtZS0+Y29yZUZyYW1lKCktPmRvY3VtZW50KCktPmlzUGx1Z2luRG9j
dW1lbnQoKSwgaGFzSW5zZWN1cmVDb250ZW50LCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsK
KyAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENvbW1pdExvYWRG
b3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIGRvY3VtZW50TG9hZGVyLm5hdmlnYXRpb25JRCgp
LCBkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fZnJhbWVIYXNDdXN0b21D
b250ZW50UHJvdmlkZXIsIHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2ZyYW1lLT5jb3JlRnJhbWUo
KS0+bG9hZGVyKCkubG9hZFR5cGUoKSksIHZhbHVlT3JDb21wdXRlKGRvY3VtZW50TG9hZGVyLnJl
c3BvbnNlKCkuY2VydGlmaWNhdGVJbmZvKCksIFtdIHsgcmV0dXJuIENlcnRpZmljYXRlSW5mbygp
OyB9KSwgZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKS51c2VkTGVnYWN5VExTKCksIG1fZnJhbWUt
PmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLT5pc1BsdWdpbkRvY3VtZW50KCksIGhhc0luc2VjdXJl
Q29udGVudCwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0
c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7CiAgICAgd2ViUGFnZS0+ZGlkQ29t
bWl0TG9hZChtX2ZyYW1lKTsKIH0KIApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjU1NzA5KQorKysgVG9vbHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjAtMDItMDQgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNYWtlIFdLV2ViVmll
dy5fbmVnb3RpYXRlZExlZ2FjeVRMUyBhY2N1cmF0ZSB3aGVuIGxvYWRpbmcgbWFpbiByZXNvdW9y
Y2UgZnJvbSBuZXR3b3JrIG9yIGNhY2hlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDcyMDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBIVFRQU2VydmVyIG5vdyBzdXBwb3J0cyBIVFRQUy4gVGVsbCB5b3Vy
IGZyaWVuZHMhCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0No
YWxsZW5nZS5tbToKKyAgICAgICAgKHRlc3RDZXJ0aWZpY2F0ZSk6CisgICAgICAgICh0ZXN0SWRl
bnRpdHkpOgorICAgICAgICAoY3JlZGVudGlhbFdpdGhJZGVudGl0eSk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UTFNEZXByZWNhdGlvbi5tbToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OndlYlZpZXdXaXRoTmF2aWdhdGlvbkRlbGVnYXRlKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvSFRU
UFNlcnZlci5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OkhUVFBTZXJ2ZXIpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6cmVxdWVzdCBjb25zdCk6CisKIDIwMjAtMDIt
MDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBGaXggTWFjIENNYWtlIGJ1aWxkCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0NoYWxsZW5nZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0NoYWxsZW5nZS5tbQkocmV2aXNpb24gMjU1NzA4KQorKysgVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9DaGFsbGVuZ2UubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAKKyNpbXBvcnQg
IkhUVFBTZXJ2ZXIuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJU
Q1BTZXJ2ZXIuaCIKICNpbXBvcnQgIlRlc3QuaCIKQEAgLTQzLDExICs0NCwxNCBAQAogCiBzdGF0
aWMgYm9vbCBuYXZpZ2F0aW9uRmluaXNoZWQ7CiAKLXN0YXRpYyBSZXRhaW5QdHI8TlNVUkxDcmVk
ZW50aWFsPiBjcmVkZW50aWFsV2l0aElkZW50aXR5KCkKK3N0YXRpYyBSZXRhaW5QdHI8U2VjQ2Vy
dGlmaWNhdGVSZWY+IHRlc3RDZXJ0aWZpY2F0ZSgpCiB7CiAgICAgYXV0byBjZXJ0aWZpY2F0ZUJ5
dGVzID0gVGVzdFdlYktpdEFQSTo6VENQU2VydmVyOjp0ZXN0Q2VydGlmaWNhdGUoKTsKLSAgICBh
dXRvIGNlcnRpZmljYXRlID0gYWRvcHRDRihTZWNDZXJ0aWZpY2F0ZUNyZWF0ZVdpdGhEYXRhKG51
bGxwdHIsIChfX2JyaWRnZSBDRkRhdGFSZWYpW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmNlcnRpZmlj
YXRlQnl0ZXMuZGF0YSgpIGxlbmd0aDpjZXJ0aWZpY2F0ZUJ5dGVzLnNpemUoKV0pKTsKLSAgICAK
KyAgICByZXR1cm4gYWRvcHRDRihTZWNDZXJ0aWZpY2F0ZUNyZWF0ZVdpdGhEYXRhKG51bGxwdHIs
IChfX2JyaWRnZSBDRkRhdGFSZWYpW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmNlcnRpZmljYXRlQnl0
ZXMuZGF0YSgpIGxlbmd0aDpjZXJ0aWZpY2F0ZUJ5dGVzLnNpemUoKV0pKTsKK30KKworUmV0YWlu
UHRyPFNlY0lkZW50aXR5UmVmPiB0ZXN0SWRlbnRpdHkoKQorewogICAgIGF1dG8gcHJpdmF0ZUtl
eUJ5dGVzID0gVGVzdFdlYktpdEFQSTo6VENQU2VydmVyOjp0ZXN0UHJpdmF0ZUtleSgpOwogICAg
IE5TRGF0YSAqZGVyRW5jb2RlZFByaXZhdGVLZXkgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6cHJp
dmF0ZUtleUJ5dGVzLmRhdGEoKSBsZW5ndGg6cHJpdmF0ZUtleUJ5dGVzLnNpemUoKV07CiAgICAg
TlNEaWN0aW9uYXJ5KiBvcHRpb25zID0gQHsKQEAgLTYxLDEwICs2NSwxNSBAQCBzdGF0aWMgUmV0
YWluUHRyPE5TVVJMQ3JlZGVudGlhbD4gY3JlZGVuCiAgICAgRVhQRUNUX05VTEwoZXJyb3IpOwog
ICAgIEVYUEVDVF9OT1RfTlVMTChwcml2YXRlS2V5LmdldCgpKTsKIAotICAgIGF1dG8gaWRlbnRp
dHkgPSBhZG9wdENGKFNlY0lkZW50aXR5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGNlcnRp
ZmljYXRlLmdldCgpLCBwcml2YXRlS2V5LmdldCgpKSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoU2Vj
SWRlbnRpdHlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdGVzdENlcnRpZmljYXRlKCkuZ2V0
KCksIHByaXZhdGVLZXkuZ2V0KCkpKTsKK30KKworc3RhdGljIFJldGFpblB0cjxOU1VSTENyZWRl
bnRpYWw+IGNyZWRlbnRpYWxXaXRoSWRlbnRpdHkoKQoreworICAgIGF1dG8gaWRlbnRpdHkgPSB0
ZXN0SWRlbnRpdHkoKTsKICAgICBFWFBFQ1RfTk9UX05VTEwoaWRlbnRpdHkpOwogICAgIAotICAg
IHJldHVybiBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxXaXRoSWRlbnRpdHk6aWRlbnRpdHku
Z2V0KCkgY2VydGlmaWNhdGVzOkBbKGlkKWNlcnRpZmljYXRlLmdldCgpXSBwZXJzaXN0ZW5jZTpO
U1VSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmVdOworICAgIHJldHVybiBbTlNVUkxDcmVkZW50
aWFsIGNyZWRlbnRpYWxXaXRoSWRlbnRpdHk6aWRlbnRpdHkuZ2V0KCkgY2VydGlmaWNhdGVzOkBb
KGlkKXRlc3RDZXJ0aWZpY2F0ZSgpLmdldCgpXSBwZXJzaXN0ZW5jZTpOU1VSTENyZWRlbnRpYWxQ
ZXJzaXN0ZW5jZU5vbmVdOwogfQogCiBAaW50ZXJmYWNlIENoYWxsZW5nZURlbGVnYXRlIDogTlNP
YmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9UTFNEZXByZWNhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RMU0RlcHJlY2F0aW9uLm1tCShyZXZpc2lv
biAyNTU3MDgpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RMU0Rl
cHJlY2F0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBIQVZF
KFNTTCkKIAorI2ltcG9ydCAiSFRUUFNlcnZlci5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRp
ZXMuaCIKICNpbXBvcnQgIlRDUFNlcnZlci5oIgogI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxl
Z2F0ZS5oIgpAQCAtMzcsMTMgKzM4LDE0IEBACiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CiAj
aW1wb3J0IDxXZWJLaXQvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaD4KICNpbXBv
cnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRl
TnVtYmVycy5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPFdlYktpdC9X
ZWJVSUtpdFN1cHBvcnQuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJDb3JlVGhyZWFkLmg+CiAjZW5k
aWYKIAotI2lmIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkKKyNpZiBIQVZFKFRMU19QUk9U
T0NPTF9WRVJTSU9OX1QpIHx8IEhBVkUoTkVUV09SS19GUkFNRVdPUkspCiBAaW50ZXJmYWNlIFRM
U09ic2VydmVyIDogTlNPYmplY3QKIC0gKHZvaWQpd2FpdFVudGlsTmVnb3RpYXRlZExlZ2FjeVRM
U0NoYW5nZWQ7CiBAZW5kCkBAIC0yMjgsMTMgKzIzMCw5IEBAIFRFU1QoVExTVmVyc2lvbiwgRElT
QUJMRURfTmF2aWdhdGlvbkRlbGUKIH0KIAogI2lmIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05f
VCkKLVRFU1QoVExTVmVyc2lvbiwgTmVnb3RpYXRlZExlZ2FjeVRMUykKLXsKLSAgICBUQ1BTZXJ2
ZXIgc2VydmVyKFRDUFNlcnZlcjo6UHJvdG9jb2w6OkhUVFBTLCBbXSAoU1NMICpzc2wpIHsKLSAg
ICAgICAgVENQU2VydmVyOjpyZXNwb25kV2l0aE9LKHNzbCk7Ci0gICAgICAgIFRDUFNlcnZlcjo6
cmVzcG9uZFdpdGhPSyhzc2wpOwotICAgIH0sIHRsczFfMSk7CiAKK3N0YXRpYyBzdGQ6OnBhaXI8
UmV0YWluUHRyPFdLV2ViVmlldz4sIFJldGFpblB0cjxUZXN0TmF2aWdhdGlvbkRlbGVnYXRlPj4g
d2ViVmlld1dpdGhOYXZpZ2F0aW9uRGVsZWdhdGUoKQorewogICAgIGF1dG8gZGVsZWdhdGUgPSBh
ZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOwogICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKICAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVs
ZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwpAQCAtMjQyLDYgKzI0MCwyMCBAQCBURVNUKFRMU1ZlcnNp
b24sIE5lZ290aWF0ZWRMZWdhY3lUTFMpCiAgICAgICAgIEVYUEVDVF9XS19TVFJFUShjaGFsbGVu
Z2UucHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kLCBOU1VSTEF1dGhlbnRpY2F0
aW9uTWV0aG9kU2VydmVyVHJ1c3QpOwogICAgICAgICBjYWxsYmFjayhOU1VSTFNlc3Npb25BdXRo
Q2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgW05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFsRm9yVHJ1
c3Q6Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdF0pOwogICAgIH1dOworICAg
IHJldHVybiB7IHdlYlZpZXcsIGRlbGVnYXRlIH07Cit9CisKKyNlbmRpZiAvLyBIQVZFKFRMU19Q
Uk9UT0NPTF9WRVJTSU9OX1QpIHx8IEhBVkUoTkVUV09SS19GUkFNRVdPUkspCisKKyNpZiBIQVZF
KFRMU19QUk9UT0NPTF9WRVJTSU9OX1QpCisKK1RFU1QoVExTVmVyc2lvbiwgTmVnb3RpYXRlZExl
Z2FjeVRMUykKK3sKKyAgICBIVFRQU2VydmVyIHNlcnZlcih7CisgICAgICAgIHsgIi8iLCB7ICJo
ZWxsbyIgfSB9CisgICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzV2l0aExlZ2FjeVRM
Uyk7CisKKyAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSB3ZWJWaWV3V2l0aE5hdmlnYXRp
b25EZWxlZ2F0ZSgpOwogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3Qg
cmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6QCJodHRwczovLzEyNy4wLjAuMTolZC8iLCBzZXJ2ZXIucG9ydCgpXV1dOwogICAgIFt3
ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwogCkBAIC0yNjIsNyArMjc0LDY0IEBAIFRFU1Qo
VExTVmVyc2lvbiwgTmVnb3RpYXRlZExlZ2FjeVRMUykKIAogICAgIFt3ZWJWaWV3IHJlbW92ZU9i
c2VydmVyOm9ic2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJfbmVnb3RpYXRlZExlZ2FjeVRMUyJd
OwogfQotI2VuZGlmCisKKyNlbmRpZiAvLyBIQVZFKFRMU19QUk9UT0NPTF9WRVJTSU9OX1QpCisK
KyNpZiBIQVZFKE5FVFdPUktfRlJBTUVXT1JLKSAmJiBIQVZFKFRMU19QUk9UT0NPTF9WRVJTSU9O
X1QpCisKK1RFU1QoVExTVmVyc2lvbiwgTmF2aWdhdGVCYWNrKQoreworICAgIEhUVFBTZXJ2ZXIg
bGVnYWN5VExTU2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsgImhlbGxvIiB9IH0KKyAgICB9LCBI
VFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHNXaXRoTGVnYWN5VExTKTsKKworICAgIEhUVFBTZXJ2
ZXIgbW9kZXJuVExTU2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsgImhlbGxvIiB9IH0KKyAgICB9
LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOworICAgIAorICAgIGF1dG8gW3dlYlZpZXcs
IGRlbGVnYXRlXSA9IHdlYlZpZXdXaXRoTmF2aWdhdGlvbkRlbGVnYXRlKCk7CisgICAgYXV0byBv
YnNlcnZlciA9IGFkb3B0TlMoW1RMU09ic2VydmVyIG5ld10pOworICAgIFt3ZWJWaWV3IGFkZE9i
c2VydmVyOm9ic2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJfbmVnb3RpYXRlZExlZ2FjeVRMUyIg
b3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6bmlsXTsKKworICAg
IFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OmxlZ2FjeVRMU1NlcnZlci5yZXF1ZXN0KCldOworICAgIEVY
UEVDVF9GQUxTRShbd2ViVmlldyBfbmVnb3RpYXRlZExlZ2FjeVRMU10pOworICAgIFtkZWxlZ2F0
ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcg
X25lZ290aWF0ZWRMZWdhY3lUTFNdKTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0Om1vZGVy
blRMU1NlcnZlci5yZXF1ZXN0KCldOworICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2
aWdhdGlvbl07CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IF9uZWdvdGlhdGVkTGVnYWN5VExT
XSk7CisKKyAgICBbd2ViVmlldyBnb0JhY2tdOworICAgIFtvYnNlcnZlciB3YWl0VW50aWxOZWdv
dGlhdGVkTGVnYWN5VExTQ2hhbmdlZF07CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgX25lZ290
aWF0ZWRMZWdhY3lUTFNdKTsKKworICAgIFt3ZWJWaWV3IHJlbW92ZU9ic2VydmVyOm9ic2VydmVy
LmdldCgpIGZvcktleVBhdGg6QCJfbmVnb3RpYXRlZExlZ2FjeVRMUyJdOworfQorCitURVNUKFRM
U1ZlcnNpb24sIFN1YnJlc291cmNlKQoreworICAgIEhUVFBTZXJ2ZXIgbGVnYWN5VExTU2VydmVy
KHsKKyAgICAgICAgeyAiLyIsIHsgImhlbGxvIiB9IH0KKyAgICB9LCBIVFRQU2VydmVyOjpQcm90
b2NvbDo6SHR0cHNXaXRoTGVnYWN5VExTKTsKKworICAgIEhUVFBTZXJ2ZXIgbW9kZXJuVExTU2Vy
dmVyKHsKKyAgICAgICAgeyAiLyIsIHsgbWFrZVN0cmluZygiPHNjcmlwdD5mZXRjaCgnaHR0cHM6
Ly8xMjcuMC4wLjE6Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlZ2FjeVRMU1NlcnZlci5wb3J0
KCkpLCAiLycse21vZGU6J25vLWNvcnMnfSk8L3NjcmlwdD4iKSB9IH0KKyAgICB9LCBIVFRQU2Vy
dmVyOjpQcm90b2NvbDo6SHR0cHMpOworICAgIAorICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRl
XSA9IHdlYlZpZXdXaXRoTmF2aWdhdGlvbkRlbGVnYXRlKCk7CisgICAgYXV0byBvYnNlcnZlciA9
IGFkb3B0TlMoW1RMU09ic2VydmVyIG5ld10pOworICAgIFt3ZWJWaWV3IGFkZE9ic2VydmVyOm9i
c2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJfbmVnb3RpYXRlZExlZ2FjeVRMUyIgb3B0aW9uczpO
U0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6bmlsXTsKKworICAgIEVYUEVDVF9G
QUxTRShbd2ViVmlldyBfbmVnb3RpYXRlZExlZ2FjeVRMU10pOworICAgIFt3ZWJWaWV3IGxvYWRS
ZXF1ZXN0Om1vZGVyblRMU1NlcnZlci5yZXF1ZXN0KCldOworICAgIHdoaWxlICghW3dlYlZpZXcg
X25lZ290aWF0ZWRMZWdhY3lUTFNdKQorICAgICAgICBbb2JzZXJ2ZXIgd2FpdFVudGlsTmVnb3Rp
YXRlZExlZ2FjeVRMU0NoYW5nZWRdOworCisgICAgW3dlYlZpZXcgcmVtb3ZlT2JzZXJ2ZXI6b2Jz
ZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAIl9uZWdvdGlhdGVkTGVnYWN5VExTIl07Cit9CisKKyNl
bmRpZiAvLyBIQVZFKE5FVFdPUktfRlJBTUVXT1JLKSAmJiBIQVZFKFRMU19QUk9UT0NPTF9WRVJT
SU9OX1QpCiAKIC8vIEZJWE1FOiBBZGQgc29tZSB0ZXN0cyBmb3IgV0tXZWJWaWV3Lmhhc09ubHlT
ZWN1cmVDb250ZW50CiAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5o
CShyZXZpc2lvbiAyNTU3MDgpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsOCBAQCBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSSB7CiBjbGFzcyBIVFRQU2VydmVyIHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgSFRUUFJlc3Bv
bnNlOwotICAgIEhUVFBTZXJ2ZXIoc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxTdHJp
bmcsIEhUVFBSZXNwb25zZT4+KTsKKyAgICBlbnVtIGNsYXNzIFByb3RvY29sIDogdWludDhfdCB7
IEh0dHAsIEh0dHBzLCBIdHRwc1dpdGhMZWdhY3lUTFMgfTsKKyAgICBIVFRQU2VydmVyKHN0ZDo6
aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8U3RyaW5nLCBIVFRQUmVzcG9uc2U+PiwgUHJvdG9j
b2wgPSBQcm90b2NvbDo6SHR0cCk7CiAgICAgdWludDE2X3QgcG9ydCgpIGNvbnN0OwogICAgIE5T
VVJMUmVxdWVzdCAqcmVxdWVzdCgpIGNvbnN0OwogICAgIApAQCAtNDYsNiArNDcsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgcmVzcG9uZFRvUmVxdWVzdHMobndfY29ubmVjdGlvbl90KTsKICAgICAK
ICAgICBSZXRhaW5QdHI8bndfbGlzdGVuZXJfdD4gbV9saXN0ZW5lcjsKKyAgICBjb25zdCBQcm90
b2NvbCBtX3Byb3RvY29sOwogICAgIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBIVFRQUmVzcG9uc2U+
IG1fcmVxdWVzdFJlc3BvbnNlTWFwOwogfTsKIApAQCAtNzQsMyArNzYsNSBAQCBzdHJ1Y3QgSFRU
UFNlcnZlcjo6SFRUUFJlc3BvbnNlIHsKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKIAog
I2VuZGlmIC8vIEhBVkUoTkVUV09SS19GUkFNRVdPUkspCisKK1JldGFpblB0cjxTZWNJZGVudGl0
eVJlZj4gdGVzdElkZW50aXR5KCk7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hU
VFBTZXJ2ZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQ
U2VydmVyLm1tCShyZXZpc2lvbiAyNTU3MDgpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L0hUVFBTZXJ2ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzLDE1ICszMywyOCBAQAogCiBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLUhUVFBTZXJ2ZXI6OkhUVFBTZXJ2ZXIoc3RkOjppbml0
aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxTdHJpbmcsIEhUVFBSZXNwb25zZT4+IHJlc3BvbnNlcykK
LSAgICA6IG1fcmVxdWVzdFJlc3BvbnNlTWFwKFtdKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6
OnBhaXI8U3RyaW5nLCBIVFRQU2VydmVyOjpIVFRQUmVzcG9uc2U+PiBsaXN0KSB7CitIVFRQU2Vy
dmVyOjpIVFRQU2VydmVyKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8U3RyaW5nLCBI
VFRQUmVzcG9uc2U+PiByZXNwb25zZXMsIFByb3RvY29sIHByb3RvY29sKQorICAgIDogbV9wcm90
b2NvbChwcm90b2NvbCkKKyAgICAsIG1fcmVxdWVzdFJlc3BvbnNlTWFwKFtdKHN0ZDo6aW5pdGlh
bGl6ZXJfbGlzdDxzdGQ6OnBhaXI8U3RyaW5nLCBIVFRQU2VydmVyOjpIVFRQUmVzcG9uc2U+PiBs
aXN0KSB7CiAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBIVFRQU2VydmVyOjpIVFRQUmVzcG9uc2U+
IG1hcDsKICAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogbGlzdCkKICAgICAgICAgICAgIG1hcC5h
ZGQocGFpci5maXJzdCwgcGFpci5zZWNvbmQpOwogICAgICAgICByZXR1cm4gbWFwOwogICAgIH0o
cmVzcG9uc2VzKSkKIHsKLSAgICBhdXRvIHBhcmFtZXRlcnMgPSBhZG9wdE5TKG53X3BhcmFtZXRl
cnNfY3JlYXRlX3NlY3VyZV90Y3AoTldfUEFSQU1FVEVSU19ESVNBQkxFX1BST1RPQ09MLCBOV19Q
QVJBTUVURVJTX0RFRkFVTFRfQ09ORklHVVJBVElPTikpOworICAgIGF1dG8gY29uZmlndXJlVExT
ID0gcHJvdG9jb2wgPT0gUHJvdG9jb2w6Okh0dHAgPyBOV19QQVJBTUVURVJTX0RJU0FCTEVfUFJP
VE9DT0wgOiBeKG53X3Byb3RvY29sX29wdGlvbnNfdCBwcm90b2NvbE9wdGlvbnMpIHsKKyNpZiBI
QVZFKFRMU19QUk9UT0NPTF9WRVJTSU9OX1QpCisgICAgICAgIGF1dG8gb3B0aW9ucyA9IGFkb3B0
TlMobndfdGxzX2NvcHlfc2VjX3Byb3RvY29sX29wdGlvbnMocHJvdG9jb2xPcHRpb25zKSk7Cisg
ICAgICAgIGF1dG8gaWRlbnRpdHkgPSBhZG9wdE5TKHNlY19pZGVudGl0eV9jcmVhdGUodGVzdElk
ZW50aXR5KCkuZ2V0KCkpKTsKKyAgICAgICAgc2VjX3Byb3RvY29sX29wdGlvbnNfc2V0X2xvY2Fs
X2lkZW50aXR5KG9wdGlvbnMuZ2V0KCksIGlkZW50aXR5LmdldCgpKTsKKyAgICAgICAgaWYgKHBy
b3RvY29sID09IFByb3RvY29sOjpIdHRwc1dpdGhMZWdhY3lUTFMpCisgICAgICAgICAgICBzZWNf
cHJvdG9jb2xfb3B0aW9uc19zZXRfbWF4X3Rsc19wcm90b2NvbF92ZXJzaW9uKG9wdGlvbnMuZ2V0
KCksIHRsc19wcm90b2NvbF92ZXJzaW9uX1RMU3YxMCk7CisjZWxzZQorICAgICAgICBVTlVTRURf
UEFSQU0ocHJvdG9jb2xPcHRpb25zKTsKKyAgICAgICAgQVNTRVJUKHByb3RvY29sICE9IFByb3Rv
Y29sOjpIdHRwc1dpdGhMZWdhY3lUTFMpOworI2VuZGlmCisgICAgfTsKKyAgICBhdXRvIHBhcmFt
ZXRlcnMgPSBhZG9wdE5TKG53X3BhcmFtZXRlcnNfY3JlYXRlX3NlY3VyZV90Y3AoY29uZmlndXJl
VExTLCBOV19QQVJBTUVURVJTX0RFRkFVTFRfQ09ORklHVVJBVElPTikpOwogICAgIG1fbGlzdGVu
ZXIgPSBhZG9wdE5TKG53X2xpc3RlbmVyX2NyZWF0ZShwYXJhbWV0ZXJzLmdldCgpKSk7CiAgICAg
bndfbGlzdGVuZXJfc2V0X3F1ZXVlKG1fbGlzdGVuZXIuZ2V0KCksIGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCkpOwogICAgIG53X2xpc3RlbmVyX3NldF9uZXdfY29ubmVjdGlvbl9oYW5kbGVyKG1f
bGlzdGVuZXIuZ2V0KCksIF4obndfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24pIHsKQEAgLTEyNyw3
ICsxNDAsMTcgQEAgdWludDE2X3QgSFRUUFNlcnZlcjo6cG9ydCgpIGNvbnN0CiAKIE5TVVJMUmVx
dWVzdCAqSFRUUFNlcnZlcjo6cmVxdWVzdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFtOU1VSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6QCJodHRwOi8vMTI3LjAuMC4xOiVkLyIsIHBvcnQoKV1dXTsKKyAgICBOU1N0
cmluZyAqZm9ybWF0OworICAgIHN3aXRjaCAobV9wcm90b2NvbCkgeworICAgIGNhc2UgUHJvdG9j
b2w6Okh0dHA6CisgICAgICAgIGZvcm1hdCA9IEAiaHR0cDovLzEyNy4wLjAuMTolZC8iOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFByb3RvY29sOjpIdHRwczoKKyAgICBjYXNlIFByb3RvY29s
OjpIdHRwc1dpdGhMZWdhY3lUTFM6CisgICAgICAgIGZvcm1hdCA9IEAiaHR0cHM6Ly8xMjcuMC4w
LjE6JWQvIjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBbTlNVUkxSZXF1ZXN0
IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OmZvcm1hdCwgcG9ydCgpXV1dOwogfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389744</attachid>
            <date>2020-02-04 16:46:04 -0800</date>
            <delta_ts>2020-02-04 17:07:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207207-20200204164603.patch</filename>
            <type>text/plain</type>
            <size>54489</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NTcwOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDIwLTAyLTA0ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBXS1dl
YlZpZXcuX25lZ290aWF0ZWRMZWdhY3lUTFMgYWNjdXJhdGUgd2hlbiBsb2FkaW5nIG1haW4gcmVz
b3VvcmNlIGZyb20gbmV0d29yayBvciBjYWNoZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3MjA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VC
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjppbmNsdWRl
Q2VydGlmaWNhdGVJbmZvIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVzcG9uc2VCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFz
ZTo6dXNlZExlZ2FjeVRMUyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlQmFzZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2VCYXNlOjpkZWNvZGUpOgorCiAyMDIwLTAyLTA0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IE1hYyBDTWFrZSBidWlsZApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
c3BvbnNlQmFzZS5jcHAJKHJldmlzaW9uIDI1NTcwOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NjEsMTEgKzI2MSwxMiBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRUeXBlKFR5cGUg
CiAgICAgbV90eXBlID0gdHlwZTsKIH0KIAotdm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aW5j
bHVkZUNlcnRpZmljYXRlSW5mbygpIGNvbnN0Cit2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpp
bmNsdWRlQ2VydGlmaWNhdGVJbmZvKFVzZWRMZWdhY3lUTFMgdXNlZExlZ2FjeVRMUykgY29uc3QK
IHsKICAgICBpZiAobV9jZXJ0aWZpY2F0ZUluZm8pCiAgICAgICAgIHJldHVybjsKICAgICBtX2Nl
cnRpZmljYXRlSW5mbyA9IHN0YXRpY19jYXN0PGNvbnN0IFJlc291cmNlUmVzcG9uc2UqPih0aGlz
KS0+cGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8oKTsKKyAgICBtX3VzZWRMZWdhY3lUTFMgPSB1c2Vk
TGVnYWN5VExTOwogfQogCiBTdHJpbmcgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnN1Z2dlc3RlZEZp
bGVuYW1lKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXNwb25zZUJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgJKHJldmlzaW9uIDI1NTcwOCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAkod29y
a2luZyBjb3B5KQpAQCAtNDEsNiArNDEsOCBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCiBi
b29sIGlzU2NyaXB0QWxsb3dlZEJ5Tm9zbmlmZihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAK
K2VudW0gY2xhc3MgVXNlZExlZ2FjeVRMUyA6IGJvb2wgeyBObywgWWVzIH07CisKIC8vIERvIG5v
dCB1c2UgdGhpcyBjbGFzcyBkaXJlY3RseSwgdXNlIHRoZSBjbGFzcyBSZXNvdXJjZVJlc3BvbnNl
IGluc3RlYWQKIGNsYXNzIFJlc291cmNlUmVzcG9uc2VCYXNlIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKQEAgLTEyNyw4ICsxMjksOSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFN0cmluZyBzYW5pdGl6ZVN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpOwog
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbmNsdWRlQ2VydGlmaWNhdGVJbmZvKCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbmNsdWRlQ2VydGlmaWNhdGVJbmZvKFVzZWRMZWdh
Y3lUTFMgPSBVc2VkTGVnYWN5VExTOjpObykgY29uc3Q7CiAgICAgY29uc3QgT3B0aW9uYWw8Q2Vy
dGlmaWNhdGVJbmZvPiYgY2VydGlmaWNhdGVJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9jZXJ0aWZp
Y2F0ZUluZm87IH07CisgICAgYm9vbCB1c2VkTGVnYWN5VExTKCkgY29uc3QgeyByZXR1cm4gbV91
c2VkTGVnYWN5VExTID09IFVzZWRMZWdhY3lUTFM6OlllczsgfQogICAgIAogICAgIC8vIFRoZXNl
IGZ1bmN0aW9ucyByZXR1cm4gcGFyc2VkIHZhbHVlcyBvZiB0aGUgY29ycmVzcG9uZGluZyByZXNw
b25zZSBoZWFkZXJzLgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY2FjaGVDb250cm9sQ29udGFp
bnNOb0NhY2hlKCkgY29uc3Q7CkBAIC0yNDYsNyArMjQ5LDggQEAgcHJpdmF0ZToKICAgICBib29s
IG1faXNSYW5nZVJlcXVlc3RlZCB7IGZhbHNlIH07CiAKIHByb3RlY3RlZDoKLSAgICBpbnQgbV9o
dHRwU3RhdHVzQ29kZSB7IDAgfTsKKyAgICBpbnQxNl90IG1faHR0cFN0YXR1c0NvZGUgeyAwIH07
CisgICAgbXV0YWJsZSBVc2VkTGVnYWN5VExTIG1fdXNlZExlZ2FjeVRMUyB7IFVzZWRMZWdhY3lU
TFM6Ok5vIH07CiB9OwogCiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIGEsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGIpIHsgcmV0dXJuIFJlc291cmNlUmVz
cG9uc2VCYXNlOjpjb21wYXJlKGEsIGIpOyB9CkBAIC0yNzksNiArMjgzLDcgQEAgdm9pZCBSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6ZW5jb2RlKEVuY29kZQogICAgIGVuY29kZXIuZW5jb2RlRW51bSht
X3R5cGUpOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShtX3RhaW50aW5nKTsKICAgICBlbmNvZGVy
IDw8IG1faXNSZWRpcmVjdGVkOworICAgIGVuY29kZXIgPDwgbV91c2VkTGVnYWN5VExTOwogICAg
IGVuY29kZXIgPDwgbV9pc1JhbmdlUmVxdWVzdGVkOwogfQogCkBAIC0zMjgsNiArMzMzLDEyIEBA
IGJvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmRlY29kZShEZWNvZGUKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIHJlc3BvbnNlLm1faXNSZWRpcmVjdGVkID0gaXNSZWRpcmVjdGVkOwogCisg
ICAgT3B0aW9uYWw8VXNlZExlZ2FjeVRMUz4gdXNlZExlZ2FjeVRMUzsKKyAgICBkZWNvZGVyID4+
IHVzZWRMZWdhY3lUTFM7CisgICAgaWYgKCF1c2VkTGVnYWN5VExTKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmVzcG9uc2UubV91c2VkTGVnYWN5VExTID0gKnVzZWRMZWdhY3lUTFM7CisK
ICAgICBib29sIGlzUmFuZ2VSZXF1ZXN0ZWQgPSBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGlzUmFuZ2VSZXF1ZXN0ZWQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwkocmV2aXNpb24gMjU1NzA5KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSw2OSBAQAorMjAyMC0wMi0wNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1ha2UgV0tXZWJWaWV3Ll9uZWdvdGlh
dGVkTGVnYWN5VExTIGFjY3VyYXRlIHdoZW4gbG9hZGluZyBtYWluIHJlc291b3JjZSBmcm9tIG5l
dHdvcmsgb3IgY2FjaGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwNzIwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEluIFBhZ2VMb2FkU3RhdGU6OmRpZENvbW1pdExvYWQsIEkgd2FzIHJlc2V0dGluZyB0
aGUgdmFsdWUgb2YgX25lZ290aWF0ZWRMZWdhY3lUTFMgdG8gZmFsc2UuCisgICAgICAgIFRoYXQg
Y3JlYXRlZCBhIHJhY2UgY29uZGl0aW9uIHdoZW4gbG9hZGluZyB0aGUgbWFpbiByZXNvdXJjZSBi
ZWNhdXNlIHRoZSBOZXR3b3JrUHJvY2VzcyB3b3VsZAorICAgICAgICBtZXNzYWdlIHRoZSBVSVBy
b2Nlc3Mgc2V0dGluZyBfbmVnb3RpYXRlZExlZ2FjeVRMUyB0byBmYWxzZSwgd2hpbGUgdGhlIE5l
dHdvcmtQcm9jZXNzIHdvdWxkCisgICAgICAgIG1lc3NhZ2UgdGhlIFdlYlByb2Nlc3Mgd2hpY2gg
d291bGQgbWVzc2FnZSB0aGUgVUlQcm9jZXNzIHRvIGNhbGwgUGFnZUxvYWRTdGF0ZTo6ZGlkQ29t
bWl0TG9hZAorICAgICAgICB3aGljaCB3b3VsZCByZXNldCBpdCB0byBmYWxzZS4gIE5vdyBpdCBy
ZXNldHMgaXQgdG8gdGhlIGNvcnJlY3QgdmFsdWUsIHdoYXRldmVyIGl0IGlzLgorCisgICAgICAg
IFVwZGF0aW5nIHRoZSBSZXNvdXJjZVJlc3BvbnNlQmFzZSBzZXJpYWxpemF0aW9uIGNvZGUgaGFz
IHRoZSBkZXNpcmFibGUgc2lkZSBlZmZlY3QgdGhhdCB0aGUgZGlzaworICAgICAgICBjYWNoZSB3
aWxsIHJlbWVtYmVyIHdoZXRoZXIgbGVnYWN5IFRMUyB3YXMgdXNlZCB0byBmZXRjaCBlYWNoIHJl
c291cmNlLiAgVGhpcyB3aWxsIG1ha2UgaXQgc28KKyAgICAgICAgX25lZ290aWF0ZWRMZWdhY3lU
TFMgaXMgdHJ1ZSBpZiB3ZSByZWFkIGNvbnRlbnQgZnJvbSB0aGUgZGlzayBjYWNoZSB0aGF0IHdh
cyBvcmlnaW5hbGx5IGZldGNoZWQKKyAgICAgICAgdXNpbmcgbGVnYWN5IFRMUy4KKworICAgICAg
ICBJbiBvcmRlciB0byBub3QgaW5jcmVhc2UgdGhlIG1lbW9yeSBmb290cHJpbnQgb2YgUmVzb3Vy
Y2VSZXNwb25zZSwgSSBjaGFuZ2VkIG1faHR0cFN0YXR1c0NvZGUgZnJvbQorICAgICAgICBhbiBp
bnQgdG8gYSBzaG9ydC4gIEl0IGp1c3QgbmVlZHMgdG8gYmUgYWJsZSB0byBjb3ZlciB0aGUgdmFs
dWVzIDAtNjAwIG9yIHNvLCB3aGljaCByZWFsbHkgb25seSBuZWVkcyAxMCBiaXRzLgorCisgICAg
ICAgIENvdmVyZWQgYnkgbmV3IEFQSSB0ZXN0cy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtEYXRhVGFzazo6bmVnb3RpYXRlZExlZ2FjeVRMUyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmg6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtEYXRhVGFza0NsaWVudDo6bmVnb3RpYXRlZExlZ2FjeVRMUyBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0Jsb2I6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3Bv
bnNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrTG9hZDo6bm90aWZ5RGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0xvYWQ6OnRocm90dGxlRGVsYXlDb21wbGV0ZWQpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrTG9hZDo6bmVnb3RpYXRlZExlZ2FjeVRMUyBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9QaW5nTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBpbmdMb2FkOjpkaWRSZWNlaXZlUmVz
cG9uc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAg
KC1bV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlkUmVjZWl2
ZVJlc3BvbnNlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtE
YXRhVGFza0N1cmw6Omludm9rZURpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrU291cDo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUxv
YWRTdGF0ZTo6ZGlkQ29tbWl0TG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VMb2FkU3Rh
dGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1l
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5Ojpjb21taXRQcm92aXNpb25hbFBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENv
bW1pdExvYWQpOgorCiAyMDIwLTAyLTA0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IE1hYyBDTWFrZSBidWlsZApJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVm
bGlnaHRDaGVja2VyLmNwcAkocmV2aXNpb24gMjU1NzA4KQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRp
ZFJlYwogICAgIG1fbmV0d29ya1Byb2Nlc3MtPmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLmRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShtX3BhcmFtZXRlcnMuc2Vzc2lvbklELCBtX3Bh
cmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIG1fcGFyYW1ldGVycy50b3BPcmlnaW4gPyAmbV9wYXJh
bWV0ZXJzLnRvcE9yaWdpbi0+ZGF0YSgpIDogbnVsbHB0ciwgY2hhbGxlbmdlLCBuZWdvdGlhdGVk
TGVnYWN5VExTLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29y
a0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgTmVnb3RpYXRl
ZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZSIpOwog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0
Q2hlY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgJKHJldmlzaW9uIDI1NTcwOCkKKysrIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIHdp
bGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmlu
YWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5k
bGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290
aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsK
ICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lk
IGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVz
RXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrRGF0YVRhc2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcAkocmV2aXNpb24gMjU1NzA4KQorKysgU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrOjpzY2hlZHVsZUZhaWx1cmUo
RmEKICAgICBtX2ZhaWx1cmVUaW1lci5zdGFydE9uZVNob3QoMF9zKTsKIH0KIAotdm9pZCBOZXR3
b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9u
c2UsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
TmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJl
c3BvbnNlLCBOZWdvdGlhdGVkTGVnYWN5VExTIG5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNl
Q29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAocmVzcG9u
c2UuaXNIVFRQMDkoKSkgewogICAgICAgICBhdXRvIHVybCA9IHJlc3BvbnNlLnVybCgpOwpAQCAt
MTExLDE3ICsxMTEsMTEgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVSZXNwb25z
ZQogICAgICAgICB9CiAgICAgfQogICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQt
PmRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOworICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUo
cmVzcG9uc2UpLCBuZWdvdGlhdGVkTGVnYWN5VExTLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiAgICAgZWxzZQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Okln
bm9yZSk7CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNrOjpuZWdvdGlhdGVkTGVnYWN5VExTKCkg
Y29uc3QKLXsKLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5uZWdvdGlhdGVk
TGVnYWN5VExTKCk7Ci19Ci0KIGJvb2wgTmV0d29ya0RhdGFUYXNrOjpzaG91bGRDYXB0dXJlRXh0
cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSBjb25zdAogewogICAgIHJldHVybiBtX2NsaWVudCA/IG1f
Y2xpZW50LT5zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSA6IGZhbHNlOwpJ
bmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5o
CShyZXZpc2lvbiAyNTU3MDgpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtEYXRhVGFzay5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIGNsYXNzIE5ldHdv
cmtEYXRhVGFza0NsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxQZXJmb3Jt
SFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVy
JiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJp
Y3MmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0
ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpID0gMDsKQEAgLTcwLDcg
KzcwLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjYW5ub3RTaG93VVJMKCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCB3YXNCbG9ja2VkQnlSZXN0cmljdGlvbnMoKSA9IDA7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgbmVnb3RpYXRlZExlZ2FjeVRMUygpIGNvbnN0IHsgfQogICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogCiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiBlcnJvcikKQEAgLTkyLDggKzkxLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCByZXN1bWUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVBbmRD
YW5jZWwoKSA9IDA7CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJik7Ci0gICAgdm9pZCBu
ZWdvdGlhdGVkTGVnYWN5VExTKCkgY29uc3Q7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25z
ZUNvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29y
a0xvYWRNZXRyaWNzKCkgY29uc3Q7CiAKICAgICBlbnVtIGNsYXNzIFN0YXRlIHsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9i
LmNwcAkocmV2aXNpb24gMjU1NzA4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkwLDcgKzI5MCw3IEBA
IHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6ZGlzcGF0Y2hEaWRSZWMKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCi0gICAgZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGVycm9yQ29kZV0oUG9s
aWN5QWN0aW9uIHBvbGljeUFjdGlvbikgeworICAgIGRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3Zl
KHJlc3BvbnNlKSwgTmVnb3RpYXRlZExlZ2FjeVRMUzo6Tm8sIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgZXJyb3JDb2RlXShQb2xpY3lBY3Rpb24gcG9saWN5
QWN0aW9uKSB7CiAgICAgICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVwIC0gTmV0d29ya0RhdGFU
YXNrQmxvYjo6ZGlkUmVjZWl2ZVJlc3BvbnNlIGNvbXBsZXRpb25IYW5kbGVyICgldSkiLCB0aGlz
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocG9saWN5QWN0aW9uKSk7CiAKICAgICAgICAgaWYgKG1f
c3RhdGUgPT0gU3RhdGU6OkNhbmNlbGluZyB8fCBtX3N0YXRlID09IFN0YXRlOjpDb21wbGV0ZWQp
IHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3Bw
CShyZXZpc2lvbiAyNTU3MDgpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA2LDEyICsyMDYsNyBAQCB2b2lkIE5ldHdv
cmtMb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKEF1CiAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3Mt
PmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShtX3Rhc2stPnNlc3Npb25JRCgpLCBtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIG1fcGFy
YW1ldGVycy50b3BPcmlnaW4gPyAmbV9wYXJhbWV0ZXJzLnRvcE9yaWdpbi0+ZGF0YSgpIDogbnVs
bHB0ciwgY2hhbGxlbmdlLCBuZWdvdGlhdGVkTGVnYWN5VExTLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya0xvYWQ6Om5lZ290aWF0ZWRMZWdhY3lUTFMoKSBj
b25zdAotewotICAgIG1fbmV0d29ya1Byb2Nlc3MtPmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLm5l
Z290aWF0ZWRMZWdhY3lUTFMobV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlEKTsKLX0KLQotdm9p
ZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNw
b25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNw
b25zZSwgTmVnb3RpYXRlZExlZ2FjeVRMUyBuZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNv
bXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKICAgICBBU1NFUlQoIW1fdGhyb3R0bGUpOwpAQCAtMjI2LDE2ICsyMjEs
MTkgQEAgdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlcwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgbm90aWZ5RGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVz
cG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgaWYgKG5lZ290aWF0ZWRM
ZWdhY3lUTFMgPT0gTmVnb3RpYXRlZExlZ2FjeVRMUzo6WWVzKQorICAgICAgICBtX25ldHdvcmtQ
cm9jZXNzLT5hdXRoZW50aWNhdGlvbk1hbmFnZXIoKS5uZWdvdGlhdGVkTGVnYWN5VExTKG1fcGFy
YW1ldGVycy53ZWJQYWdlUHJveHlJRCk7CisgICAgCisgICAgbm90aWZ5RGlkUmVjZWl2ZVJlc3Bv
bnNlKFdURk1vdmUocmVzcG9uc2UpLCBuZWdvdGlhdGVkTGVnYWN5VExTLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya0xvYWQ6Om5vdGlmeURpZFJlY2VpdmVS
ZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlvbkhh
bmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0xvYWQ6Om5vdGlmeURpZFJl
Y2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0ZWRMZWdh
Y3lUTFMgbmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAg
ICByZXNwb25zZS5zZXRTb3VyY2UoUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpOZXR3b3JrKTsK
ICAgICBpZiAobV9wYXJhbWV0ZXJzLm5lZWRzQ2VydGlmaWNhdGVJbmZvKQotICAgICAgICByZXNw
b25zZS5pbmNsdWRlQ2VydGlmaWNhdGVJbmZvKCk7CisgICAgICAgIHJlc3BvbnNlLmluY2x1ZGVD
ZXJ0aWZpY2F0ZUluZm8obmVnb3RpYXRlZExlZ2FjeVRMUyA9PSBOZWdvdGlhdGVkTGVnYWN5VExT
OjpZZXMgPyBVc2VkTGVnYWN5VExTOjpZZXMgOiBVc2VkTGVnYWN5VExTOjpObyk7CiAKICAgICBt
X2NsaWVudC5nZXQoKS5kaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KQEAgLTI2NSw3ICsyNjMsNyBAQCB2b2lkIE5ldHdv
cmtMb2FkOjp0aHJvdHRsZURlbGF5Q29tcGxldGVkCiAKICAgICBhdXRvIHRocm90dGxlID0gV1RG
TW92ZShtX3Rocm90dGxlKTsKIAotICAgIG5vdGlmeURpZFJlY2VpdmVSZXNwb25zZShXVEZNb3Zl
KHRocm90dGxlLT5yZXNwb25zZSksIFdURk1vdmUodGhyb3R0bGUtPnJlc3BvbnNlQ29tcGxldGlv
bkhhbmRsZXIpKTsKKyAgICBub3RpZnlEaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZSh0aHJvdHRs
ZS0+cmVzcG9uc2UpLCBOZWdvdGlhdGVkTGVnYWN5VExTOjpObywgV1RGTW92ZSh0aHJvdHRsZS0+
cmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtMb2FkOjpkaWRT
ZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVj
dGVkVG9TZW5kKQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWQuaAkocmV2aXNpb24gMjU1NzA4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCwxNiArNzQsMTUgQEAgcHJpdmF0ZToK
ICAgICAvLyBOZXR3b3JrRGF0YVRhc2tDbGllbnQKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJl
ZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBk
aWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5l
Z290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwot
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwg
UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMs
IFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZENv
bXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJD
b3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVp
bnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQp
IGZpbmFsOwogICAgIHZvaWQgd2FzQmxvY2tlZCgpIGZpbmFsOwogICAgIHZvaWQgY2Fubm90U2hv
d1VSTCgpIGZpbmFsOwogICAgIHZvaWQgd2FzQmxvY2tlZEJ5UmVzdHJpY3Rpb25zKCkgZmluYWw7
Ci0gICAgdm9pZCBuZWdvdGlhdGVkTGVnYWN5VExTKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lk
IG5vdGlmeURpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJl
c3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAgdm9pZCBub3RpZnlEaWRSZWNlaXZlUmVz
cG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBS
ZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgdGhyb3R0bGVEZWxheUNvbXBs
ZXRlZCgpOwogCiAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxOZXR3b3JrTG9hZENsaWVudD4g
bV9jbGllbnQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDI1NTcwOCkKKysrIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTU1LDYgKzU1LDggQEAgY2xhc3MgTmV0d29ya0xvYWRDaGVja2VyOwogY2xhc3MgU2Vydmlj
ZVdvcmtlckZldGNoVGFzazsKIGNsYXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKIAorZW51bSBj
bGFzcyBOZWdvdGlhdGVkTGVnYWN5VExTIDogYm9vbDsKKwogc3RydWN0IFJlc291cmNlTG9hZElu
Zm87CiAKIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewpJbmRleDogU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAJKHJldmlzaW9uIDI1NTcwOCkKKysrIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjAsNyAr
MTYwLDcgQEAgdm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShBdXRoZQogICAgIGRp
ZEZpbmlzaChSZXNvdXJjZUVycm9yIHsgU3RyaW5nKCksIDAsIGN1cnJlbnRVUkwoKSwgIkZhaWxl
ZCBIVFRQIGF1dGhlbnRpY2F0aW9uIl9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250
cm9sIH0pOwogfQogCi12b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VS
ZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNw
b25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25I
YW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgiZGlkUmVjZWl2ZVJlc3BvbnNlIC0gaHR0cFN0YXR1c0NvZGU6ICVkIiwgcmVzcG9uc2UuaHR0
cFN0YXR1c0NvZGUoKSk7CiAgICAgYXV0byB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgJKHJldmlzaW9uIDI1
NTcwOCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB3aWxsUGVyZm9y
bUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAg
IHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBm
aW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CisgICAgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVn
YWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9p
ZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29u
c3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5k
RGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVk
VG9TZW5kKSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3RvcmFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCShyZXZpc2lvbiAyNTU3MDgpCisr
KyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDcgKzEwNyw3IEBAIHB1YmxpYzoKICAgICBzaXplX3Qg
YXBwcm94aW1hdGVTaXplKCkgY29uc3Q7CiAKICAgICAvLyBJbmNyZW1lbnRpbmcgdGhpcyBudW1i
ZXIgd2lsbCBkZWxldGUgYWxsIGV4aXN0aW5nIGNhY2hlIGNvbnRlbnQgZm9yIGV2ZXJ5b25lLiBE
byB5b3UgcmVhbGx5IG5lZWQgdG8gZG8gaXQ/Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHZl
cnNpb24gPSAxNTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdmVyc2lvbiA9IDE2OwogCiAg
ICAgU3RyaW5nIGJhc2VQYXRoSXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAgICAgU3RyaW5nIHZlcnNp
b25QYXRoKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtEYXRhVGFza0NvY29hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCShyZXZpc2lvbiAyNTU3MDgp
CisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0Nv
Y29hLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHZvaWQg
ZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNF
eHBlY3RlZFRvU2VuZCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5nZUNv
bXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmlj
cyYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMs
IFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKIAogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQ
UmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRh
c2tDb2NvYS5tbQkocmV2aXNpb24gMjU1NzA4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzcz
LDEwICszNzMsMTAgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkUmVjZWl2ZURhdAog
ICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShkYXRhKSk7CiB9CiAKLXZv
aWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFdlYktpdDo6UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxl
ciYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgTmVnb3Rp
YXRlZExlZ2FjeVRMUyBuZWdvdGlhdGVkTGVnYWN5VExTLCBXZWJLaXQ6OlJlc3BvbnNlQ29tcGxl
dGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBFTUlUX1NJR05QT1NUKG1f
dGFzaywgInJlY2VpdmVkIHJlc3BvbnNlIGhlYWRlcnMiKTsKLSAgICBOZXR3b3JrRGF0YVRhc2s6
OmRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOworICAgIE5ldHdvcmtEYXRhVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1v
dmUocmVzcG9uc2UpLCBuZWdvdGlhdGVkTGVnYWN5VExTLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJl
ZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZWRpcmVjdENvbXBsZXRpb25IYW5k
bGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCShyZXZpc2lv
biAyNTU3MDgpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtT
ZXNzaW9uQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTgxOCwyNCArODE4LDIyIEBAIC0gKHZv
aWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2kKICAgICBpZiAoYXV0byogbmV0d29y
a0RhdGFUYXNrID0gW3NlbGYgZXhpc3RpbmdUYXNrOmRhdGFUYXNrXSkgewogICAgICAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgICAgIGJvb2wgbmVnb3RpYXRlZExlZ2FjeVRM
UyA9IGZhbHNlOworICAgICAgICBOZWdvdGlhdGVkTGVnYWN5VExTIG5lZ290aWF0ZWRMZWdhY3lU
TFMgPSBOZWdvdGlhdGVkTGVnYWN5VExTOjpObzsKICNpZiBIQVZFKFRMU19QUk9UT0NPTF9WRVJT
SU9OX1QpCiAgICAgICAgIE5TVVJMU2Vzc2lvblRhc2tUcmFuc2FjdGlvbk1ldHJpY3MgKm1ldHJp
Y3MgPSBkYXRhVGFzay5faW5jb21wbGV0ZVRhc2tNZXRyaWNzLnRyYW5zYWN0aW9uTWV0cmljcy5s
YXN0T2JqZWN0OwogICAgICAgICBhdXRvIHRsc1ZlcnNpb24gPSAodGxzX3Byb3RvY29sX3ZlcnNp
b25fdCltZXRyaWNzLm5lZ290aWF0ZWRUTFNQcm90b2NvbFZlcnNpb24udW5zaWduZWRTaG9ydFZh
bHVlOwogICAgICAgICBpZiAodGxzVmVyc2lvbiA9PSB0bHNfcHJvdG9jb2xfdmVyc2lvbl9UTFN2
MTAgfHwgdGxzVmVyc2lvbiA9PSB0bHNfcHJvdG9jb2xfdmVyc2lvbl9UTFN2MTEpCi0gICAgICAg
ICAgICBuZWdvdGlhdGVkTGVnYWN5VExTID0gdHJ1ZTsKKyAgICAgICAgICAgIG5lZ290aWF0ZWRM
ZWdhY3lUTFMgPSBOZWdvdGlhdGVkTGVnYWN5VExTOjpZZXM7CiAgICAgICAgIFVOVVNFRF9QQVJB
TShtZXRyaWNzKTsKICNlbHNlIC8vIFdlIGRvIG5vdCBuZWVkIHRvIGNoZWNrIF9UTFNOZWdvdGlh
dGVkUHJvdG9jb2xWZXJzaW9uIGlmIHdlIGhhdmUgbWV0cmljcy5uZWdvdGlhdGVkVExTUHJvdG9j
b2xWZXJzaW9uIGJlY2F1c2UgaXQgd29ya3MgYXQgcmVzcG9uc2UgdGltZSBldmVuIGJlZm9yZSBy
ZGFyOi8vcHJvYmxlbS81NjUyMjYwMQogICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19CRUdJTgogICAgICAgICBpZiAoW2RhdGFUYXNrIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IoX1RMU05lZ290aWF0ZWRQcm90b2NvbFZlcnNpb24pXSkgewogICAgICAgICAgICAgU1NM
UHJvdG9jb2wgdGxzVmVyc2lvbiA9IFtkYXRhVGFzayBfVExTTmVnb3RpYXRlZFByb3RvY29sVmVy
c2lvbl07CiAgICAgICAgICAgICBpZiAodGxzVmVyc2lvbiA9PSBrVExTUHJvdG9jb2wxMSB8fCB0
bHNWZXJzaW9uID09IGtUTFNQcm90b2NvbDEpCi0gICAgICAgICAgICAgICAgbmVnb3RpYXRlZExl
Z2FjeVRMUyA9IHRydWU7CisgICAgICAgICAgICAgICAgbmVnb3RpYXRlZExlZ2FjeVRMUyA9IE5l
Z290aWF0ZWRMZWdhY3lUTFM6OlllczsKICAgICAgICAgfQogICAgICAgICBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19FTkQKICNlbmRpZgotICAgICAgICBpZiAobmVnb3RpYXRlZExlZ2Fj
eVRMUykKLSAgICAgICAgICAgIG5ldHdvcmtEYXRhVGFzay0+bmVnb3RpYXRlZExlZ2FjeVRMUygp
OwogICAgICAgICAKICAgICAgICAgLy8gQXZvaWQgTUlNRSB0eXBlIHNuaWZmaW5nIGlmIHRoZSBy
ZXNwb25zZSBjb21lcyBiYWNrIGFzIDMwNCBOb3QgTW9kaWZpZWQuCiAgICAgICAgIGludCBzdGF0
dXNDb2RlID0gW3Jlc3BvbnNlIGlzS2luZE9mQ2xhc3M6TlNIVFRQVVJMUmVzcG9uc2UuY2xhc3Nd
ID8gWyhOU0hUVFBVUkxSZXNwb25zZSAqKXJlc3BvbnNlIHN0YXR1c0NvZGVdIDogMDsKQEAgLTg1
NCw3ICs4NTIsNyBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3NpCiAg
ICAgICAgIGNvcHlUaW1pbmdEYXRhKFtkYXRhVGFzayBfdGltaW5nRGF0YV0sIHJlc291cmNlUmVz
cG9uc2UuZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcygpKTsKIAogICAgICAgICBhdXRvIGNv
bXBsZXRpb25IYW5kbGVyQ29weSA9IEJsb2NrX2NvcHkoY29tcGxldGlvbkhhbmRsZXIpOwotICAg
ICAgICBuZXR3b3JrRGF0YVRhc2stPmRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc291cmNl
UmVzcG9uc2UpLCBbY29tcGxldGlvbkhhbmRsZXJDb3B5LCB0YXNrSWRlbnRpZmllcl0oV2ViQ29y
ZTo6UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgeworICAgICAgICBuZXR3b3JrRGF0YVRhc2st
PmRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc291cmNlUmVzcG9uc2UpLCBuZWdvdGlhdGVk
TGVnYWN5VExTLCBbY29tcGxldGlvbkhhbmRsZXJDb3B5LCB0YXNrSWRlbnRpZmllcl0oV2ViQ29y
ZTo6UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgewogI2lmICFMT0dfRElTQUJMRUQKICAgICAg
ICAgICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVsbHUgZGlkUmVjZWl2ZVJlc3BvbnNlIGNvbXBs
ZXRpb25IYW5kbGVyICglZCkiLCB0YXNrSWRlbnRpZmllciwgcG9saWN5QWN0aW9uKTsKICNlbHNl
CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNr
Q3VybC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJs
L05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCShyZXZpc2lvbiAyNTU3MDgpCisrKyBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIyNCw3ICsyMjQsNyBAQCBib29sIE5ldHdvcmtEYXRhVGFza0N1cmw6OnNob3Vs
ZFJlZGlyZWN0CiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6aW52b2tlRGlkUmVjZWl2ZVJl
c3BvbnNlKCkKIHsKLSAgICBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZShtX3Jl
c3BvbnNlKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oUG9saWN5QWN0
aW9uIHBvbGljeUFjdGlvbikgeworICAgIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3Bv
bnNlKG1fcmVzcG9uc2UpLCBOZWdvdGlhdGVkTGVnYWN5VExTOjpObywgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgewogICAg
ICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6Q2FuY2VsaW5nIHx8IG1fc3RhdGUgPT0gU3RhdGU6
OkNvbXBsZXRlZCkKICAgICAgICAgICAgIHJldHVybjsKIApJbmRleDogU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNw
cAkocmV2aXNpb24gMjU1NzA4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3Vw
L05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzgsNyArMzc4LDcg
QEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaXNwYXRjaERpZFJlYwogICAgIGRlcHJlY2F0
ZWRSZXNwb25zZU1ldHJpY3MucmVxdWVzdFN0YXJ0ID0gbV9uZXR3b3JrTG9hZE1ldHJpY3MucmVx
dWVzdFN0YXJ0OwogICAgIGRlcHJlY2F0ZWRSZXNwb25zZU1ldHJpY3MucmVzcG9uc2VTdGFydCA9
IG1fbmV0d29ya0xvYWRNZXRyaWNzLnJlc3BvbnNlU3RhcnQ7CiAKLSAgICBkaWRSZWNlaXZlUmVz
cG9uc2UoUmVzb3VyY2VSZXNwb25zZShtX3Jlc3BvbnNlKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKV0oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgeworICAgIGRpZFJl
Y2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlKG1fcmVzcG9uc2UpLCBOZWdvdGlhdGVkTGVn
YWN5VExTOjpObywgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oUG9saWN5
QWN0aW9uIHBvbGljeUFjdGlvbikgewogICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6Q2Fu
Y2VsaW5nIHx8IG1fc3RhdGUgPT0gU3RhdGU6OkNvbXBsZXRlZCkgewogICAgICAgICAgICAgY2xl
YXJSZXF1ZXN0KCk7CiAgICAgICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmNwcAkocmV2aXNpb24gMjU1NzA4KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNyw3
ICszMTcsNyBAQCB2b2lkIFBhZ2VMb2FkU3RhdGU6OmRpZEZhaWxQcm92aXNpb25hbExvCiAgICAg
bV91bmNvbW1pdHRlZFN0YXRlLnVucmVhY2hhYmxlVVJMID0gbV9sYXN0VW5yZWFjaGFibGVVUkw7
CiB9CiAKLXZvaWQgUGFnZUxvYWRTdGF0ZTo6ZGlkQ29tbWl0TG9hZChjb25zdCBUcmFuc2FjdGlv
bjo6VG9rZW4mIHRva2VuLCBXZWJDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9v
bCBoYXNJbnNlY3VyZUNvbnRlbnQpCit2b2lkIFBhZ2VMb2FkU3RhdGU6OmRpZENvbW1pdExvYWQo
Y29uc3QgVHJhbnNhY3Rpb246OlRva2VuJiB0b2tlbiwgV2ViQ2VydGlmaWNhdGVJbmZvJiBjZXJ0
aWZpY2F0ZUluZm8sIGJvb2wgaGFzSW5zZWN1cmVDb250ZW50LCBib29sIHVzZWRMZWdhY3lUTFMp
CiB7CiAgICAgQVNTRVJUX1VOVVNFRCh0b2tlbiwgJnRva2VuLm1fcGFnZUxvYWRTdGF0ZSA9PSB0
aGlzKTsKICAgICBBU1NFUlQobV91bmNvbW1pdHRlZFN0YXRlLnN0YXRlID09IFN0YXRlOjpQcm92
aXNpb25hbCk7CkBAIC0zMjgsNyArMzI4LDcgQEAgdm9pZCBQYWdlTG9hZFN0YXRlOjpkaWRDb21t
aXRMb2FkKGNvbnN0IAogCiAgICAgbV91bmNvbW1pdHRlZFN0YXRlLnVybCA9IG1fdW5jb21taXR0
ZWRTdGF0ZS5wcm92aXNpb25hbFVSTDsKICAgICBtX3VuY29tbWl0dGVkU3RhdGUucHJvdmlzaW9u
YWxVUkwgPSBTdHJpbmcoKTsKLSAgICBtX3VuY29tbWl0dGVkU3RhdGUubmVnb3RpYXRlZExlZ2Fj
eVRMUyA9IGZhbHNlOworICAgIG1fdW5jb21taXR0ZWRTdGF0ZS5uZWdvdGlhdGVkTGVnYWN5VExT
ID0gdXNlZExlZ2FjeVRMUzsKIAogICAgIG1fdW5jb21taXR0ZWRTdGF0ZS50aXRsZSA9IFN0cmlu
ZygpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuaAkocmV2
aXNpb24gMjU1NzA4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjMsNyArMTYzLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFRyYW5zYWN0aW9u
OjpUb2tlbiYsIGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25h
bExvYWQoY29uc3QgVHJhbnNhY3Rpb246OlRva2VuJik7CiAKLSAgICB2b2lkIGRpZENvbW1pdExv
YWQoY29uc3QgVHJhbnNhY3Rpb246OlRva2VuJiwgV2ViQ2VydGlmaWNhdGVJbmZvJiwgYm9vbCBo
YXNJbnNlY3VyZUNvbnRlbnQpOworICAgIHZvaWQgZGlkQ29tbWl0TG9hZChjb25zdCBUcmFuc2Fj
dGlvbjo6VG9rZW4mLCBXZWJDZXJ0aWZpY2F0ZUluZm8mLCBib29sIGhhc0luc2VjdXJlQ29udGVu
dCwgYm9vbCB1c2VkTGVnYWN5VExTKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWQoY29uc3QgVHJh
bnNhY3Rpb246OlRva2VuJik7CiAgICAgdm9pZCBkaWRGYWlsTG9hZChjb25zdCBUcmFuc2FjdGlv
bjo6VG9rZW4mKTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQ
YWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zp
c2lvbmFsUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjU1NzA4KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjQs
NyArMjY0LDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkRmFpbFByb3ZpcwogICAg
IG1fcGFnZS5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQobV9wcm9jZXNzLmNv
cHlSZWYoKSwgZnJhbWVJRCwgV1RGTW92ZShmcmFtZVNlY3VyaXR5T3JpZ2luKSwgbmF2aWdhdGlv
bklELCBwcm92aXNpb25hbFVSTCwgZXJyb3IsIHdpbGxDb250aW51ZUxvYWRpbmcsIHVzZXJEYXRh
KTsgLy8gTWF5IGRlbGV0ZSB8dGhpc3wuCiB9CiAKLXZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6
OmRpZENvbW1pdExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9t
Q29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpD
ZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCBjb250YWluc1BsdWdpbkRvY3Vt
ZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2Vj
dXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBQcm92aXNpb25hbFBh
Z2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVI
YXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdl
YkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBib29sIHVzZWRMZWdhY3lU
TFMsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5z
ZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJiB1
c2VyRGF0YSkKIHsKICAgICBpZiAoIXZhbGlkYXRlSW5wdXQoZnJhbWVJRCwgbmF2aWdhdGlvbklE
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjc0LDcgKzI3NCw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQ
YWdlUHJveHk6OmRpZENvbW1pdExvYWQKICAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2Vi
UGFnZUlEKTsKIAogICAgIG1fd2FzQ29tbWl0dGVkID0gdHJ1ZTsKLSAgICBtX3BhZ2UuY29tbWl0
UHJvdmlzaW9uYWxQYWdlKGZyYW1lSUQsIG5hdmlnYXRpb25JRCwgbWltZVR5cGUsIGZyYW1lSGFz
Q3VzdG9tQ29udGVudFByb3ZpZGVyLCBmcmFtZUxvYWRUeXBlLCBjZXJ0aWZpY2F0ZUluZm8sIGNv
bnRhaW5zUGx1Z2luRG9jdW1lbnQsIGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgdXNlckRhdGEp
OyAvLyBXaWxsIGRlbGV0ZSB8dGhpc3wuCisgICAgbV9wYWdlLmNvbW1pdFByb3Zpc2lvbmFsUGFn
ZShmcmFtZUlELCBuYXZpZ2F0aW9uSUQsIG1pbWVUeXBlLCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQ
cm92aWRlciwgZnJhbWVMb2FkVHlwZSwgY2VydGlmaWNhdGVJbmZvLCB1c2VkTGVnYWN5VExTLCBj
b250YWluc1BsdWdpbkRvY3VtZW50LCBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIHVzZXJEYXRh
KTsgLy8gV2lsbCBkZWxldGUgfHRoaXN8LgogfQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5
OjpkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YShjb25zdCBXZWJOYXZpZ2F0aW9uRGF0YVN0
b3JlJiBzdG9yZSwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgJKHJldmlzaW9uIDI1NTcwOCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUGVyZm9y
bUNsaWVudFJlZGlyZWN0KGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJp
bmcmIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAg
IHZvaWQgZGlkQ3JlYXRlTWFpbkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAgICAg
dm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwmJiwgVVJMJiYgdW5yZWFjaGFibGVVUkws
IGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBkaWRDb21taXRMb2FkRm9yRnJhbWUoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZy
YW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYsIGJvb2wgY29udGFp
bnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBm
b3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkaWRD
b21taXRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250
ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRp
ZmljYXRlSW5mbyYsIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250YWluc1BsdWdpbkRvY3Vt
ZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2Vj
dXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25h
bExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
Y29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYsIFdlYkNvcmU6OldpbGxDb250aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAg
dm9pZCBzdGFydFVSTFNjaGVtZVRhc2soVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMmJik7CiAgICAg
dm9pZCBiYWNrRm9yd2FyZEdvVG9JdGVtKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlk
ZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSYmLCBjb25zdCBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMmKT4mJik7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI1NTcwOCkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMxNjEsNyArMzE2MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lz
aW8KICAgICBzZW5kZXItPnNlbmQoYWN0aW9uLCBuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2
aWdhdGlvbklEKCkgOiAwLCBkb3dubG9hZElELCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlKEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9h
ZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBi
b29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJl
Q29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYgdXNlckRh
dGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlKEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9h
ZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBi
b29sIHVzZWRMZWdhY3lUTFMsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8
V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNv
bnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBBU1NFUlQobV9wcm92aXNpb25hbFBhZ2Up
OwogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImNvbW1pdFByb3Zpc2lvbmFs
UGFnZTogbmV3UElEID0gJWkiLCBtX3Byb3Zpc2lvbmFsUGFnZS0+cHJvY2VzcygpLnByb2Nlc3NJ
ZGVudGlmaWVyKCkpOwpAQCAtMzE5NSw3ICszMTk1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNv
bW1pdFByb3Zpc2lvbmFsUGFnZQogICAgIGNvbnN0IGF1dG8gb2xkV2ViUGFnZUlEID0gbV93ZWJQ
YWdlSUQ7CiAgICAgc3dhcFRvUHJvdmlzaW9uYWxQYWdlKHN0ZDo6ZXhjaGFuZ2UobV9wcm92aXNp
b25hbFBhZ2UsIG51bGxwdHIpKTsKIAotICAgIGRpZENvbW1pdExvYWRGb3JGcmFtZShmcmFtZUlE
LCBuYXZpZ2F0aW9uSUQsIG1pbWVUeXBlLCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwg
ZnJhbWVMb2FkVHlwZSwgY2VydGlmaWNhdGVJbmZvLCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBm
b3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIHVzZXJEYXRhKTsKKyAgICBkaWRDb21taXRMb2FkRm9y
RnJhbWUoZnJhbWVJRCwgbmF2aWdhdGlvbklELCBtaW1lVHlwZSwgZnJhbWVIYXNDdXN0b21Db250
ZW50UHJvdmlkZXIsIGZyYW1lTG9hZFR5cGUsIGNlcnRpZmljYXRlSW5mbywgdXNlZExlZ2FjeVRM
UywgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCB1c2Vy
RGF0YSk7CiAKICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPmRpZENvbW1pdFByb3Zpc2lvbmFs
UGFnZShvbGRXZWJQYWdlSUQsIG1fd2ViUGFnZUlEKTsKIH0KQEAgLTQ0ODEsNyArNDQ4MSw3IEBA
IHN0YXRpYyBPcHRpb25TZXQ8Q3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGEKIH0KICNlbmRpZgogCi12
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJv
b2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IG9wYXF1ZUZyYW1lTG9h
ZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBi
b29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPEhhc0luc2VjdXJlQ29udGVudD4g
aGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCit2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVI
YXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IG9wYXF1ZUZyYW1lTG9hZFR5cGUsIGNv
bnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBib29sIHVzZWRM
ZWdhY3lUTFMsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8SGFzSW5zZWN1
cmVDb250ZW50PiBoYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkK
IHsKICAgICBMT0coTG9hZGluZywgIihMb2FkaW5nKSBXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIg
ZGlkQ29tbWl0TG9hZEZvckZyYW1lIGluIG5hdmlnYXRpb24gJSIgUFJJdTY0LCBtX2lkZW50aWZp
ZXIudG9VSW50NjQoKSwgbmF2aWdhdGlvbklEKTsKICAgICBMT0coQmFja0ZvcndhcmQsICIoQmFj
ay9Gb3J3YXJkKSBBZnRlciBsb2FkIGNvbW1pdCwgYmFjay9mb3J3YXJkIGxpc3QgaXMgbm93OiVz
IiwgbV9iYWNrRm9yd2FyZExpc3QtPmxvZ2dpbmdTdHJpbmcoKSk7CkBAIC00NTIzLDcgKzQ1MjMs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lCiAgICAgYm9vbCBt
YXJrUGFnZUluc2VjdXJlID0gaGFzSW5zZWN1cmVDb250ZW50ID8gaGFzSW5zZWN1cmVDb250ZW50
LnZhbHVlKCkgPT0gSGFzSW5zZWN1cmVDb250ZW50OjpZZXMgOiBtX3RyZWF0c1NIQTFDZXJ0aWZp
Y2F0ZXNBc0luc2VjdXJlICYmIGNlcnRpZmljYXRlSW5mby5jb250YWluc05vblJvb3RTSEExU2ln
bmVkQ2VydGlmaWNhdGUoKTsKIAogICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkgewotICAg
ICAgICBtX3BhZ2VMb2FkU3RhdGUuZGlkQ29tbWl0TG9hZCh0cmFuc2FjdGlvbiwgd2ViQ2VydGlm
aWNhdGVJbmZvLCBtYXJrUGFnZUluc2VjdXJlKTsKKyAgICAgICAgbV9wYWdlTG9hZFN0YXRlLmRp
ZENvbW1pdExvYWQodHJhbnNhY3Rpb24sIHdlYkNlcnRpZmljYXRlSW5mbywgbWFya1BhZ2VJbnNl
Y3VyZSwgdXNlZExlZ2FjeVRMUyk7CiAgICAgICAgIG1fc2hvdWxkU3VwcHJlc3NOZXh0QXV0b21h
dGljTmF2aWdhdGlvblNuYXBzaG90ID0gZmFsc2U7CiAgICAgfSBlbHNlIGlmIChtYXJrUGFnZUlu
c2VjdXJlKQogICAgICAgICBtX3BhZ2VMb2FkU3RhdGUuZGlkRGlzcGxheU9yUnVuSW5zZWN1cmVD
b250ZW50KHRyYW5zYWN0aW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCShyZXZpc2lvbiAyNTU3MDgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTU4Nyw3ICsxNTg3LDcgQEAgcHVibGljOgog
I2VuZGlmCiAKICAgICBQcm92aXNpb25hbFBhZ2VQcm94eSogcHJvdmlzaW9uYWxQYWdlUHJveHko
KSBjb25zdCB7IHJldHVybiBtX3Byb3Zpc2lvbmFsUGFnZS5nZXQoKTsgfQotICAgIHZvaWQgY29t
bWl0UHJvdmlzaW9uYWxQYWdlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29u
dGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0
aWZpY2F0ZUluZm8mLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNv
cmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBV
c2VyRGF0YSYpOworICAgIHZvaWQgY29tbWl0UHJvdmlzaW9uYWxQYWdlKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRU
eXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mLCBib29sIHVzZWRMZWdhY3lUTFMs
IGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1
cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJik7CiAK
ICAgICAvLyBMb2dpYyBzaGFyZWQgYmV0d2VlbiB0aGUgV2ViUGFnZVByb3h5IGFuZCB0aGUgUHJv
dmlzaW9uYWxQYWdlUHJveHkuCiAgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwmJiwgVVJMJiYgdW5yZWFjaGFibGVVUkwsIGNv
bnN0IFVzZXJEYXRhJik7CkBAIC0xNzM3LDcgKzE3MzcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIp
OwogICAgIHZvaWQgZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZShXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMJiYpOwogICAgIHZvaWQgZGlk
RmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiwgV2ViQ29yZTo6V2lsbENvbnRpbnVlTG9hZGluZywgY29uc3QgVXNl
ckRhdGEmKTsKLSAgICB2b2lkIGRpZENvbW1pdExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Ym9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlw
ZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiwgYm9vbCBjb250YWluc1BsdWdpbkRv
Y3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0lu
c2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRpZENvbW1pdExvYWRG
b3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRl
ciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZv
JiwgYm9vbCB1c2VkTGVnYWN5VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlv
bmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50
LCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJh
bWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0
IFVzZXJEYXRhJik7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFVzZXJEYXRhJik7CiAg
ICAgdm9pZCBkaWRGYWlsTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3Qg
VXNlckRhdGEmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI1NTcwOCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTI2LDcg
KzEyNiw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRGlkQ2FuY2VsQ2xpZW50
UmVkaXJlY3RGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKICAgICBE
aWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCB1cmwpCiAgICAgRGlkRmFpbFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1
Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgU3RyaW5nIHByb3Zpc2lvbmFsVVJMLCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yIGVycm9yLCBlbnVtOmJvb2wgV2ViQ29yZTo6V2lsbENvbnRpbnVlTG9hZGluZyB3aWxs
Q29udGludWVMb2FkaW5nLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQotICAgIERpZENvbW1p
dExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBTdHJpbmcgbWltZVR5cGUsIGJvb2wgaGFzQ3VzdG9tQ29udGVudFByb3Zp
ZGVyLCB1aW50MzJfdCBsb2FkVHlwZSwgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvIGNlcnRpZmlj
YXRlSW5mbywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpI
YXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgV2ViS2l0OjpVc2Vy
RGF0YSB1c2VyRGF0YSkKKyAgICBEaWRDb21taXRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU3RyaW5nIG1pbWVUeXBl
LCBib29sIGhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgbG9hZFR5cGUsIFdlYkNv
cmU6OkNlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgdXNlZExlZ2FjeVRMUywg
Ym9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3Vy
ZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgV2ViS2l0OjpVc2VyRGF0YSB1c2Vy
RGF0YSkKICAgICBEaWRGYWlsTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJy
b3IsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkRmluaXNoRG9jdW1lbnRMb2Fk
Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBEaWRGaW5pc2hMb2FkRm9y
RnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMjU1NzA4KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTYwLDcgKzU2MCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGlkQ28KICAgICB3ZWJQYWdlLT5zYW5kYm94RXh0ZW5zaW9uVHJhY2tlcigpLmRpZENvbW1pdFBy
b3Zpc2lvbmFsTG9hZChtX2ZyYW1lKTsKIAogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgot
ICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ29tbWl0TG9hZEZv
ckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgZG9jdW1lbnRMb2FkZXIubmF2aWdhdGlvbklEKCks
IGRvY3VtZW50TG9hZGVyLnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9mcmFtZUhhc0N1c3RvbUNv
bnRlbnRQcm92aWRlciwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fZnJhbWUtPmNvcmVGcmFtZSgp
LT5sb2FkZXIoKS5sb2FkVHlwZSgpKSwgdmFsdWVPckNvbXB1dGUoZG9jdW1lbnRMb2FkZXIucmVz
cG9uc2UoKS5jZXJ0aWZpY2F0ZUluZm8oKSwgW10geyByZXR1cm4gQ2VydGlmaWNhdGVJbmZvKCk7
IH0pLCBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKS0+aXNQbHVnaW5Eb2N1bWVudCgp
LCBoYXNJbnNlY3VyZUNvbnRlbnQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRy
YW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOworICAgIHdl
YlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ29tbWl0TG9hZEZvckZyYW1l
KG1fZnJhbWUtPmZyYW1lSUQoKSwgZG9jdW1lbnRMb2FkZXIubmF2aWdhdGlvbklEKCksIGRvY3Vt
ZW50TG9hZGVyLnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9mcmFtZUhhc0N1c3RvbUNvbnRlbnRQ
cm92aWRlciwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2Fk
ZXIoKS5sb2FkVHlwZSgpKSwgdmFsdWVPckNvbXB1dGUoZG9jdW1lbnRMb2FkZXIucmVzcG9uc2Uo
KS5jZXJ0aWZpY2F0ZUluZm8oKSwgW10geyByZXR1cm4gQ2VydGlmaWNhdGVJbmZvKCk7IH0pLCBk
b2N1bWVudExvYWRlci5yZXNwb25zZSgpLnVzZWRMZWdhY3lUTFMoKSwgbV9mcmFtZS0+Y29yZUZy
YW1lKCktPmRvY3VtZW50KCktPmlzUGx1Z2luRG9jdW1lbnQoKSwgaGFzSW5zZWN1cmVDb250ZW50
LCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5k
bGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKICAgICB3ZWJQYWdlLT5kaWRDb21taXRMb2Fk
KG1fZnJhbWUpOwogfQogCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTU3MDkpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwyNCBAQAorMjAyMC0wMi0wNCAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1ha2UgV0tXZWJWaWV3Ll9uZWdv
dGlhdGVkTGVnYWN5VExTIGFjY3VyYXRlIHdoZW4gbG9hZGluZyBtYWluIHJlc291b3JjZSBmcm9t
IG5ldHdvcmsgb3IgY2FjaGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwNzIwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEhUVFBTZXJ2ZXIgbm93IHN1cHBvcnRzIEhUVFBTLiBUZWxsIHlvdXIgZnJpZW5k
cyEKKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2hhbGxlbmdl
Lm1tOgorICAgICAgICAodGVzdENlcnRpZmljYXRlKToKKyAgICAgICAgKHRlc3RJZGVudGl0eSk6
CisgICAgICAgIChjcmVkZW50aWFsV2l0aElkZW50aXR5KToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1RMU0RlcHJlY2F0aW9uLm1tOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6d2ViVmlld1dpdGhOYXZpZ2F0aW9uRGVsZWdhdGUpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVy
Lmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6SFRUUFNlcnZlcik6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpyZXF1ZXN0IGNvbnN0KToKKwogMjAyMC0wMi0wNCAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBN
YWMgQ01ha2UgYnVpbGQKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvQ2hhbGxlbmdlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvQ2hhbGxlbmdlLm1tCShyZXZpc2lvbiAyNTU3MDgpCisrKyBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NoYWxsZW5nZS5tbQkod29ya2luZyBjb3B5KQpA
QCAtMjUsNiArMjUsNyBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKIAorI2ltcG9ydCAiSFRUUFNl
cnZlci5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRDUFNlcnZl
ci5oIgogI2ltcG9ydCAiVGVzdC5oIgpAQCAtNDMsMTEgKzQ0LDE0IEBACiAKIHN0YXRpYyBib29s
IG5hdmlnYXRpb25GaW5pc2hlZDsKIAotc3RhdGljIFJldGFpblB0cjxOU1VSTENyZWRlbnRpYWw+
IGNyZWRlbnRpYWxXaXRoSWRlbnRpdHkoKQorc3RhdGljIFJldGFpblB0cjxTZWNDZXJ0aWZpY2F0
ZVJlZj4gdGVzdENlcnRpZmljYXRlKCkKIHsKICAgICBhdXRvIGNlcnRpZmljYXRlQnl0ZXMgPSBU
ZXN0V2ViS2l0QVBJOjpUQ1BTZXJ2ZXI6OnRlc3RDZXJ0aWZpY2F0ZSgpOwotICAgIGF1dG8gY2Vy
dGlmaWNhdGUgPSBhZG9wdENGKFNlY0NlcnRpZmljYXRlQ3JlYXRlV2l0aERhdGEobnVsbHB0ciwg
KF9fYnJpZGdlIENGRGF0YVJlZilbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6Y2VydGlmaWNhdGVCeXRl
cy5kYXRhKCkgbGVuZ3RoOmNlcnRpZmljYXRlQnl0ZXMuc2l6ZSgpXSkpOwotICAgIAorICAgIHJl
dHVybiBhZG9wdENGKFNlY0NlcnRpZmljYXRlQ3JlYXRlV2l0aERhdGEobnVsbHB0ciwgKF9fYnJp
ZGdlIENGRGF0YVJlZilbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6Y2VydGlmaWNhdGVCeXRlcy5kYXRh
KCkgbGVuZ3RoOmNlcnRpZmljYXRlQnl0ZXMuc2l6ZSgpXSkpOworfQorCitSZXRhaW5QdHI8U2Vj
SWRlbnRpdHlSZWY+IHRlc3RJZGVudGl0eSgpCit7CiAgICAgYXV0byBwcml2YXRlS2V5Qnl0ZXMg
PSBUZXN0V2ViS2l0QVBJOjpUQ1BTZXJ2ZXI6OnRlc3RQcml2YXRlS2V5KCk7CiAgICAgTlNEYXRh
ICpkZXJFbmNvZGVkUHJpdmF0ZUtleSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczpwcml2YXRlS2V5
Qnl0ZXMuZGF0YSgpIGxlbmd0aDpwcml2YXRlS2V5Qnl0ZXMuc2l6ZSgpXTsKICAgICBOU0RpY3Rp
b25hcnkqIG9wdGlvbnMgPSBAewpAQCAtNjEsMTAgKzY1LDE1IEBAIHN0YXRpYyBSZXRhaW5QdHI8
TlNVUkxDcmVkZW50aWFsPiBjcmVkZW4KICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CiAgICAgRVhQ
RUNUX05PVF9OVUxMKHByaXZhdGVLZXkuZ2V0KCkpOwogCi0gICAgYXV0byBpZGVudGl0eSA9IGFk
b3B0Q0YoU2VjSWRlbnRpdHlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY2VydGlmaWNhdGUu
Z2V0KCksIHByaXZhdGVLZXkuZ2V0KCkpKTsKKyAgICByZXR1cm4gYWRvcHRDRihTZWNJZGVudGl0
eUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB0ZXN0Q2VydGlmaWNhdGUoKS5nZXQoKSwgcHJp
dmF0ZUtleS5nZXQoKSkpOworfQorCitzdGF0aWMgUmV0YWluUHRyPE5TVVJMQ3JlZGVudGlhbD4g
Y3JlZGVudGlhbFdpdGhJZGVudGl0eSgpCit7CisgICAgYXV0byBpZGVudGl0eSA9IHRlc3RJZGVu
dGl0eSgpOwogICAgIEVYUEVDVF9OT1RfTlVMTChpZGVudGl0eSk7CiAgICAgCi0gICAgcmV0dXJu
IFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbFdpdGhJZGVudGl0eTppZGVudGl0eS5nZXQoKSBj
ZXJ0aWZpY2F0ZXM6QFsoaWQpY2VydGlmaWNhdGUuZ2V0KCldIHBlcnNpc3RlbmNlOk5TVVJMQ3Jl
ZGVudGlhbFBlcnNpc3RlbmNlTm9uZV07CisgICAgcmV0dXJuIFtOU1VSTENyZWRlbnRpYWwgY3Jl
ZGVudGlhbFdpdGhJZGVudGl0eTppZGVudGl0eS5nZXQoKSBjZXJ0aWZpY2F0ZXM6QFsoaWQpdGVz
dENlcnRpZmljYXRlKCkuZ2V0KCldIHBlcnNpc3RlbmNlOk5TVVJMQ3JlZGVudGlhbFBlcnNpc3Rl
bmNlTm9uZV07CiB9CiAKIEBpbnRlcmZhY2UgQ2hhbGxlbmdlRGVsZWdhdGUgOiBOU09iamVjdCA8
V0tOYXZpZ2F0aW9uRGVsZWdhdGU+CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1RMU0RlcHJlY2F0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVExTRGVwcmVjYXRpb24ubW0JKHJldmlzaW9uIDI1NTcw
OCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVExTRGVwcmVjYXRp
b24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEhBVkUoU1NMKQog
CisjaW1wb3J0ICJIVFRQU2VydmVyLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgog
I2ltcG9ydCAiVENQU2VydmVyLmgiCiAjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgi
CkBAIC0zNywxMyArMzgsMTQgQEAKICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KICNpbXBvcnQg
PFdlYktpdC9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oPgogI2ltcG9ydCA8d3Rm
L1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJz
Lmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8V2ViS2l0L1dlYlVJS2l0
U3VwcG9ydC5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkNvcmVUaHJlYWQuaD4KICNlbmRpZgogCi0j
aWYgSEFWRShUTFNfUFJPVE9DT0xfVkVSU0lPTl9UKQorI2lmIEhBVkUoVExTX1BST1RPQ09MX1ZF
UlNJT05fVCkgfHwgSEFWRShORVRXT1JLX0ZSQU1FV09SSykKIEBpbnRlcmZhY2UgVExTT2JzZXJ2
ZXIgOiBOU09iamVjdAogLSAodm9pZCl3YWl0VW50aWxOZWdvdGlhdGVkTGVnYWN5VExTQ2hhbmdl
ZDsKIEBlbmQKQEAgLTIyOCwxMyArMjMwLDkgQEAgVEVTVChUTFNWZXJzaW9uLCBESVNBQkxFRF9O
YXZpZ2F0aW9uRGVsZQogfQogCiAjaWYgSEFWRShUTFNfUFJPVE9DT0xfVkVSU0lPTl9UKQotVEVT
VChUTFNWZXJzaW9uLCBOZWdvdGlhdGVkTGVnYWN5VExTKQotewotICAgIFRDUFNlcnZlciBzZXJ2
ZXIoVENQU2VydmVyOjpQcm90b2NvbDo6SFRUUFMsIFtdIChTU0wgKnNzbCkgewotICAgICAgICBU
Q1BTZXJ2ZXI6OnJlc3BvbmRXaXRoT0soc3NsKTsKLSAgICAgICAgVENQU2VydmVyOjpyZXNwb25k
V2l0aE9LKHNzbCk7Ci0gICAgfSwgdGxzMV8xKTsKIAorc3RhdGljIHN0ZDo6cGFpcjxSZXRhaW5Q
dHI8V0tXZWJWaWV3PiwgUmV0YWluUHRyPFRlc3ROYXZpZ2F0aW9uRGVsZWdhdGU+PiB3ZWJWaWV3
V2l0aE5hdmlnYXRpb25EZWxlZ2F0ZSgpCit7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMo
W1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbV0tXZWJWaWV3IG5ld10pOwogICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpk
ZWxlZ2F0ZS5nZXQoKV07CkBAIC0yNDIsNiArMjQwLDIwIEBAIFRFU1QoVExTVmVyc2lvbiwgTmVn
b3RpYXRlZExlZ2FjeVRMUykKICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGNoYWxsZW5nZS5wcm90
ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2QsIE5TVVJMQXV0aGVudGljYXRpb25NZXRo
b2RTZXJ2ZXJUcnVzdCk7CiAgICAgICAgIGNhbGxiYWNrKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVu
Z2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFs
bGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0XSk7CiAgICAgfV07CisgICAgcmV0dXJu
IHsgd2ViVmlldywgZGVsZWdhdGUgfTsKK30KKworI2VuZGlmIC8vIEhBVkUoVExTX1BST1RPQ09M
X1ZFUlNJT05fVCkgfHwgSEFWRShORVRXT1JLX0ZSQU1FV09SSykKKworI2lmIEhBVkUoVExTX1BS
T1RPQ09MX1ZFUlNJT05fVCkKKworVEVTVChUTFNWZXJzaW9uLCBOZWdvdGlhdGVkTGVnYWN5VExT
KQoreworICAgIEhUVFBTZXJ2ZXIgc2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsgImhlbGxvIiB9
IH0KKyAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHNXaXRoTGVnYWN5VExTKTsKKwor
ICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHdlYlZpZXdXaXRoTmF2aWdhdGlvbkRlbGVn
YXRlKCk7CiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
Imh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlci5wb3J0KCldXV07CiAgICAgW3dlYlZpZXcg
bG9hZFJlcXVlc3Q6cmVxdWVzdF07CiAKQEAgLTI2Miw3ICsyNzQsNjQgQEAgVEVTVChUTFNWZXJz
aW9uLCBOZWdvdGlhdGVkTGVnYWN5VExTKQogCiAgICAgW3dlYlZpZXcgcmVtb3ZlT2JzZXJ2ZXI6
b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAIl9uZWdvdGlhdGVkTGVnYWN5VExTIl07CiB9Ci0j
ZW5kaWYKKworI2VuZGlmIC8vIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkKKworI2lmIEhB
VkUoTkVUV09SS19GUkFNRVdPUkspICYmIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkKKwor
VEVTVChUTFNWZXJzaW9uLCBOYXZpZ2F0ZUJhY2spCit7CisgICAgSFRUUFNlcnZlciBsZWdhY3lU
TFNTZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyAiaGVsbG8iIH0gfQorICAgIH0sIEhUVFBTZXJ2
ZXI6OlByb3RvY29sOjpIdHRwc1dpdGhMZWdhY3lUTFMpOworCisgICAgSFRUUFNlcnZlciBtb2Rl
cm5UTFNTZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyAiaGVsbG8iIH0gfQorICAgIH0sIEhUVFBT
ZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CisgICAgCisgICAgYXV0byBbd2ViVmlldywgZGVsZWdh
dGVdID0gd2ViVmlld1dpdGhOYXZpZ2F0aW9uRGVsZWdhdGUoKTsKKyAgICBhdXRvIG9ic2VydmVy
ID0gYWRvcHROUyhbVExTT2JzZXJ2ZXIgbmV3XSk7CisgICAgW3dlYlZpZXcgYWRkT2JzZXJ2ZXI6
b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAIl9uZWdvdGlhdGVkTGVnYWN5VExTIiBvcHRpb25z
Ok5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDpuaWxdOworCisgICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6bGVnYWN5VExTU2VydmVyLnJlcXVlc3QoKV07CisgICAgRVhQRUNUX0ZB
TFNFKFt3ZWJWaWV3IF9uZWdvdGlhdGVkTGVnYWN5VExTXSk7CisgICAgW2RlbGVnYXRlIHdhaXRG
b3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBfbmVnb3Rp
YXRlZExlZ2FjeVRMU10pOworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6bW9kZXJuVExTU2Vy
dmVyLnJlcXVlc3QoKV07CisgICAgW2RlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9u
XTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgX25lZ290aWF0ZWRMZWdhY3lUTFNdKTsKKwor
ICAgIFt3ZWJWaWV3IGdvQmFja107CisgICAgW29ic2VydmVyIHdhaXRVbnRpbE5lZ290aWF0ZWRM
ZWdhY3lUTFNDaGFuZ2VkXTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBfbmVnb3RpYXRlZExl
Z2FjeVRMU10pOworCisgICAgW3dlYlZpZXcgcmVtb3ZlT2JzZXJ2ZXI6b2JzZXJ2ZXIuZ2V0KCkg
Zm9yS2V5UGF0aDpAIl9uZWdvdGlhdGVkTGVnYWN5VExTIl07Cit9CisKK1RFU1QoVExTVmVyc2lv
biwgU3VicmVzb3VyY2UpCit7CisgICAgSFRUUFNlcnZlciBsZWdhY3lUTFNTZXJ2ZXIoeworICAg
ICAgICB7ICIvIiwgeyAiaGVsbG8iIH0gfQorICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpI
dHRwc1dpdGhMZWdhY3lUTFMpOworCisgICAgSFRUUFNlcnZlciBtb2Rlcm5UTFNTZXJ2ZXIoewor
ICAgICAgICB7ICIvIiwgeyBtYWtlU3RyaW5nKCI8c2NyaXB0PmZldGNoKCdodHRwczovLzEyNy4w
LjAuMToiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGVnYWN5VExTU2VydmVyLnBvcnQoKSksICIv
Jyx7bW9kZTonbm8tY29ycyd9KTwvc2NyaXB0PiIpIH0gfQorICAgIH0sIEhUVFBTZXJ2ZXI6OlBy
b3RvY29sOjpIdHRwcyk7CisgICAgCisgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gd2Vi
Vmlld1dpdGhOYXZpZ2F0aW9uRGVsZWdhdGUoKTsKKyAgICBhdXRvIG9ic2VydmVyID0gYWRvcHRO
UyhbVExTT2JzZXJ2ZXIgbmV3XSk7CisgICAgW3dlYlZpZXcgYWRkT2JzZXJ2ZXI6b2JzZXJ2ZXIu
Z2V0KCkgZm9yS2V5UGF0aDpAIl9uZWdvdGlhdGVkTGVnYWN5VExTIiBvcHRpb25zOk5TS2V5VmFs
dWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDpuaWxdOworCisgICAgRVhQRUNUX0ZBTFNFKFt3
ZWJWaWV3IF9uZWdvdGlhdGVkTGVnYWN5VExTXSk7CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6
bW9kZXJuVExTU2VydmVyLnJlcXVlc3QoKV07CisgICAgd2hpbGUgKCFbd2ViVmlldyBfbmVnb3Rp
YXRlZExlZ2FjeVRMU10pCisgICAgICAgIFtvYnNlcnZlciB3YWl0VW50aWxOZWdvdGlhdGVkTGVn
YWN5VExTQ2hhbmdlZF07CisKKyAgICBbd2ViVmlldyByZW1vdmVPYnNlcnZlcjpvYnNlcnZlci5n
ZXQoKSBmb3JLZXlQYXRoOkAiX25lZ290aWF0ZWRMZWdhY3lUTFMiXTsKK30KKworI2VuZGlmIC8v
IEhBVkUoTkVUV09SS19GUkFNRVdPUkspICYmIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkK
IAogLy8gRklYTUU6IEFkZCBzb21lIHRlc3RzIGZvciBXS1dlYlZpZXcuaGFzT25seVNlY3VyZUNv
bnRlbnQKIApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgJKHJldmlz
aW9uIDI1NTcwOCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw4IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsK
IGNsYXNzIEhUVFBTZXJ2ZXIgewogcHVibGljOgogICAgIHN0cnVjdCBIVFRQUmVzcG9uc2U7Ci0g
ICAgSFRUUFNlcnZlcihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPFN0cmluZywgSFRU
UFJlc3BvbnNlPj4pOworICAgIGVudW0gY2xhc3MgUHJvdG9jb2wgOiB1aW50OF90IHsgSHR0cCwg
SHR0cHMsIEh0dHBzV2l0aExlZ2FjeVRMUyB9OworICAgIEhUVFBTZXJ2ZXIoc3RkOjppbml0aWFs
aXplcl9saXN0PHN0ZDo6cGFpcjxTdHJpbmcsIEhUVFBSZXNwb25zZT4+LCBQcm90b2NvbCA9IFBy
b3RvY29sOjpIdHRwKTsKICAgICB1aW50MTZfdCBwb3J0KCkgY29uc3Q7CiAgICAgTlNVUkxSZXF1
ZXN0ICpyZXF1ZXN0KCkgY29uc3Q7CiAgICAgCkBAIC00Niw2ICs0Nyw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCByZXNwb25kVG9SZXF1ZXN0cyhud19jb25uZWN0aW9uX3QpOwogICAgIAogICAgIFJl
dGFpblB0cjxud19saXN0ZW5lcl90PiBtX2xpc3RlbmVyOworICAgIGNvbnN0IFByb3RvY29sIG1f
cHJvdG9jb2w7CiAgICAgY29uc3QgSGFzaE1hcDxTdHJpbmcsIEhUVFBSZXNwb25zZT4gbV9yZXF1
ZXN0UmVzcG9uc2VNYXA7CiB9OwogCkBAIC03NCwzICs3Niw1IEBAIHN0cnVjdCBIVFRQU2VydmVy
OjpIVFRQUmVzcG9uc2UgewogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQogCiAjZW5kaWYg
Ly8gSEFWRShORVRXT1JLX0ZSQU1FV09SSykKKworUmV0YWluUHRyPFNlY0lkZW50aXR5UmVmPiB0
ZXN0SWRlbnRpdHkoKTsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZl
ci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIu
bW0JKHJldmlzaW9uIDI1NTcwOCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNl
cnZlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMzMsMTUgKzMzLDI4IEBACiAKIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKIAotSFRUUFNlcnZlcjo6SFRUUFNlcnZlcihzdGQ6OmluaXRpYWxpemVy
X2xpc3Q8c3RkOjpwYWlyPFN0cmluZywgSFRUUFJlc3BvbnNlPj4gcmVzcG9uc2VzKQotICAgIDog
bV9yZXF1ZXN0UmVzcG9uc2VNYXAoW10oc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxT
dHJpbmcsIEhUVFBTZXJ2ZXI6OkhUVFBSZXNwb25zZT4+IGxpc3QpIHsKK0hUVFBTZXJ2ZXI6OkhU
VFBTZXJ2ZXIoc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxTdHJpbmcsIEhUVFBSZXNw
b25zZT4+IHJlc3BvbnNlcywgUHJvdG9jb2wgcHJvdG9jb2wpCisgICAgOiBtX3Byb3RvY29sKHBy
b3RvY29sKQorICAgICwgbV9yZXF1ZXN0UmVzcG9uc2VNYXAoW10oc3RkOjppbml0aWFsaXplcl9s
aXN0PHN0ZDo6cGFpcjxTdHJpbmcsIEhUVFBTZXJ2ZXI6OkhUVFBSZXNwb25zZT4+IGxpc3QpIHsK
ICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIEhUVFBTZXJ2ZXI6OkhUVFBSZXNwb25zZT4gbWFwOwog
ICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBsaXN0KQogICAgICAgICAgICAgbWFwLmFkZChwYWly
LmZpcnN0LCBwYWlyLnNlY29uZCk7CiAgICAgICAgIHJldHVybiBtYXA7CiAgICAgfShyZXNwb25z
ZXMpKQogewotICAgIGF1dG8gcGFyYW1ldGVycyA9IGFkb3B0TlMobndfcGFyYW1ldGVyc19jcmVh
dGVfc2VjdXJlX3RjcChOV19QQVJBTUVURVJTX0RJU0FCTEVfUFJPVE9DT0wsIE5XX1BBUkFNRVRF
UlNfREVGQVVMVF9DT05GSUdVUkFUSU9OKSk7CisgICAgYXV0byBjb25maWd1cmVUTFMgPSBwcm90
b2NvbCA9PSBQcm90b2NvbDo6SHR0cCA/IE5XX1BBUkFNRVRFUlNfRElTQUJMRV9QUk9UT0NPTCA6
IF4obndfcHJvdG9jb2xfb3B0aW9uc190IHByb3RvY29sT3B0aW9ucykgeworI2lmIEhBVkUoVExT
X1BST1RPQ09MX1ZFUlNJT05fVCkKKyAgICAgICAgYXV0byBvcHRpb25zID0gYWRvcHROUyhud190
bHNfY29weV9zZWNfcHJvdG9jb2xfb3B0aW9ucyhwcm90b2NvbE9wdGlvbnMpKTsKKyAgICAgICAg
YXV0byBpZGVudGl0eSA9IGFkb3B0TlMoc2VjX2lkZW50aXR5X2NyZWF0ZSh0ZXN0SWRlbnRpdHko
KS5nZXQoKSkpOworICAgICAgICBzZWNfcHJvdG9jb2xfb3B0aW9uc19zZXRfbG9jYWxfaWRlbnRp
dHkob3B0aW9ucy5nZXQoKSwgaWRlbnRpdHkuZ2V0KCkpOworICAgICAgICBpZiAocHJvdG9jb2wg
PT0gUHJvdG9jb2w6Okh0dHBzV2l0aExlZ2FjeVRMUykKKyAgICAgICAgICAgIHNlY19wcm90b2Nv
bF9vcHRpb25zX3NldF9tYXhfdGxzX3Byb3RvY29sX3ZlcnNpb24ob3B0aW9ucy5nZXQoKSwgdGxz
X3Byb3RvY29sX3ZlcnNpb25fVExTdjEwKTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShw
cm90b2NvbE9wdGlvbnMpOworICAgICAgICBBU1NFUlQocHJvdG9jb2wgIT0gUHJvdG9jb2w6Okh0
dHBzV2l0aExlZ2FjeVRMUyk7CisjZW5kaWYKKyAgICB9OworICAgIGF1dG8gcGFyYW1ldGVycyA9
IGFkb3B0TlMobndfcGFyYW1ldGVyc19jcmVhdGVfc2VjdXJlX3RjcChjb25maWd1cmVUTFMsIE5X
X1BBUkFNRVRFUlNfREVGQVVMVF9DT05GSUdVUkFUSU9OKSk7CiAgICAgbV9saXN0ZW5lciA9IGFk
b3B0TlMobndfbGlzdGVuZXJfY3JlYXRlKHBhcmFtZXRlcnMuZ2V0KCkpKTsKICAgICBud19saXN0
ZW5lcl9zZXRfcXVldWUobV9saXN0ZW5lci5nZXQoKSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSk7CiAgICAgbndfbGlzdGVuZXJfc2V0X25ld19jb25uZWN0aW9uX2hhbmRsZXIobV9saXN0ZW5l
ci5nZXQoKSwgXihud19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikgewpAQCAtMTI3LDcgKzE0MCwx
NyBAQCB1aW50MTZfdCBIVFRQU2VydmVyOjpwb3J0KCkgY29uc3QKIAogTlNVUkxSZXF1ZXN0ICpI
VFRQU2VydmVyOjpyZXF1ZXN0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gW05TVVJMUmVxdWVzdCBy
ZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZv
cm1hdDpAImh0dHA6Ly8xMjcuMC4wLjE6JWQvIiwgcG9ydCgpXV1dOworICAgIE5TU3RyaW5nICpm
b3JtYXQ7CisgICAgc3dpdGNoIChtX3Byb3RvY29sKSB7CisgICAgY2FzZSBQcm90b2NvbDo6SHR0
cDoKKyAgICAgICAgZm9ybWF0ID0gQCJodHRwOi8vMTI3LjAuMC4xOiVkLyI7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUHJvdG9jb2w6Okh0dHBzOgorICAgIGNhc2UgUHJvdG9jb2w6Okh0dHBz
V2l0aExlZ2FjeVRMUzoKKyAgICAgICAgZm9ybWF0ID0gQCJodHRwczovLzEyNy4wLjAuMTolZC8i
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIFtOU1VSTFJlcXVlc3QgcmVxdWVz
dFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
Zm9ybWF0LCBwb3J0KCldXV07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389748</attachid>
            <date>2020-02-04 17:07:05 -0800</date>
            <delta_ts>2020-02-04 17:21:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207207-20200204170703.patch</filename>
            <type>text/plain</type>
            <size>57598</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNTU3MDgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDIwLTAyLTA0ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBXS1dlYlZpZXcuX25lZ290
aWF0ZWRMZWdhY3lUTFMgYWNjdXJhdGUgd2hlbiBsb2FkaW5nIG1haW4gcmVzb3VvcmNlIGZyb20g
bmV0d29yayBvciBjYWNoZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA3MjA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiB3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuY3BwOgorICAgICAg
ICAoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAgKiB3dGYvcGVy
c2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaDoKKyAgICAgICAgKiB3dGYvcGVyc2lzdGVuY2Uv
UGVyc2lzdGVudEVuY29kZXIuY3BwOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rl
cjo6ZW5jb2RlKToKKyAgICAgICAgKiB3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIu
aDoKKwogMjAyMC0wMi0wNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtKU0NdIEludHJvZHVjZSBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvciBhbmQgcmVk
dWNlIHNpemVvZihVbmxpbmtlZENvZGVCbG9jaykKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3BlcnNp
c3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0
Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5jcHAJKHJldmlzaW9uIDI1NTcwOCkKKysr
IFNvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODcsNiArODcsMTEgQEAgYm9vbCBEZWNvZGVyOjpkZWNvZGUodWludDE2X3Qm
IHJlc3VsdCkKICAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7CiB9CiAKK2Jvb2wgRGVj
b2Rlcjo6ZGVjb2RlKGludDE2X3QmIHJlc3VsdCkKK3sKKyAgICByZXR1cm4gZGVjb2RlTnVtYmVy
KHJlc3VsdCk7Cit9CisKIGJvb2wgRGVjb2Rlcjo6ZGVjb2RlKHVpbnQzMl90JiByZXN1bHQpCiB7
CiAgICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwpJbmRleDogU291cmNlL1dURi93dGYv
cGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oCShyZXZpc2lvbiAyNTU3MDgpCisr
KyBTb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC01MCw2ICs1MCw3IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBkZWNvZGUodWludDE2X3QmKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBkZWNv
ZGUodWludDMyX3QmKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBkZWNvZGUodWludDY0
X3QmKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBkZWNvZGUoaW50MTZfdCYpOwogICAg
IFdURl9FWFBPUlRfUFJJVkFURSBib29sIGRlY29kZShpbnQzMl90Jik7CiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgZGVjb2RlKGludDY0X3QmKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBkZWNvZGUoZmxvYXQmKTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1Bl
cnNpc3RlbnRFbmNvZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9wZXJzaXN0
ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5jcHAJKHJldmlzaW9uIDI1NTcwOCkKKysrIFNvdXJjZS9X
VEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODUsNiArODUsMTEgQEAgdm9pZCBFbmNvZGVyOjplbmNvZGUodWludDE2X3QgdmFsdWUpCiAg
ICAgZW5jb2RlTnVtYmVyKHZhbHVlKTsKIH0KIAordm9pZCBFbmNvZGVyOjplbmNvZGUoaW50MTZf
dCB2YWx1ZSkKK3sKKyAgICBlbmNvZGVOdW1iZXIodmFsdWUpOworfQorCiB2b2lkIEVuY29kZXI6
OmVuY29kZSh1aW50MzJfdCB2YWx1ZSkKIHsKICAgICBlbmNvZGVOdW1iZXIodmFsdWUpOwpJbmRl
eDogU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oCShy
ZXZpc2lvbiAyNTU3MDgpCisrKyBTb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50
RW5jb2Rlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw2ICs4NSw3IEBAIHByaXZhdGU6CiAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZW5jb2RlKHVpbnQxNl90KTsKICAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgdm9pZCBlbmNvZGUodWludDMyX3QpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2
b2lkIGVuY29kZSh1aW50NjRfdCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZW5jb2Rl
KGludDE2X3QpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGVuY29kZShpbnQzMl90KTsK
ICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBlbmNvZGUoaW50NjRfdCk7CiAgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHZvaWQgZW5jb2RlKGZsb2F0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9u
IDI1NTcwOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE3IEBACisyMDIwLTAyLTA0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBXS1dlYlZpZXcuX25lZ290aWF0ZWRMZWdhY3lU
TFMgYWNjdXJhdGUgd2hlbiBsb2FkaW5nIG1haW4gcmVzb3VvcmNlIGZyb20gbmV0d29yayBvciBj
YWNoZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3
MjA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjppbmNsdWRlQ2VydGlmaWNhdGVJbmZvIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6dXNlZExlZ2FjeVRMUyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpkZWNvZGUpOgorCiAyMDIw
LTAyLTA0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgRml4IE1hYyBDTWFrZSBidWlsZApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAJKHJldmlzaW9u
IDI1NTcwOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNw
b25zZUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjEsMTEgKzI2MSwxMiBAQCB2b2lkIFJl
c291cmNlUmVzcG9uc2VCYXNlOjpzZXRUeXBlKFR5cGUgCiAgICAgbV90eXBlID0gdHlwZTsKIH0K
IAotdm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aW5jbHVkZUNlcnRpZmljYXRlSW5mbygpIGNv
bnN0Cit2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjppbmNsdWRlQ2VydGlmaWNhdGVJbmZvKFVz
ZWRMZWdhY3lUTFMgdXNlZExlZ2FjeVRMUykgY29uc3QKIHsKICAgICBpZiAobV9jZXJ0aWZpY2F0
ZUluZm8pCiAgICAgICAgIHJldHVybjsKICAgICBtX2NlcnRpZmljYXRlSW5mbyA9IHN0YXRpY19j
YXN0PGNvbnN0IFJlc291cmNlUmVzcG9uc2UqPih0aGlzKS0+cGxhdGZvcm1DZXJ0aWZpY2F0ZUlu
Zm8oKTsKKyAgICBtX3VzZWRMZWdhY3lUTFMgPSB1c2VkTGVnYWN5VExTOwogfQogCiBTdHJpbmcg
UmVzb3VyY2VSZXNwb25zZUJhc2U6OnN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3QKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9u
c2VCYXNlLmgJKHJldmlzaW9uIDI1NTcwOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEs
OCBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCiBib29sIGlzU2NyaXB0QWxsb3dlZEJ5Tm9z
bmlmZihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAKK2VudW0gY2xhc3MgVXNlZExlZ2FjeVRM
UyA6IGJvb2wgeyBObywgWWVzIH07CisKIC8vIERvIG5vdCB1c2UgdGhpcyBjbGFzcyBkaXJlY3Rs
eSwgdXNlIHRoZSBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlIGluc3RlYWQKIGNsYXNzIFJlc291cmNl
UmVzcG9uc2VCYXNlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTEyNyw4ICsx
MjksOSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN1Z2dlc3RlZEZpbGVu
YW1lKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBzYW5pdGl6ZVN1
Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBpbmNsdWRlQ2VydGlmaWNhdGVJbmZvKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBpbmNsdWRlQ2VydGlmaWNhdGVJbmZvKFVzZWRMZWdhY3lUTFMgPSBVc2VkTGVnYWN5VExTOjpO
bykgY29uc3Q7CiAgICAgY29uc3QgT3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiYgY2VydGlmaWNh
dGVJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9jZXJ0aWZpY2F0ZUluZm87IH07CisgICAgYm9vbCB1
c2VkTGVnYWN5VExTKCkgY29uc3QgeyByZXR1cm4gbV91c2VkTGVnYWN5VExTID09IFVzZWRMZWdh
Y3lUTFM6OlllczsgfQogICAgIAogICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyByZXR1cm4gcGFyc2Vk
IHZhbHVlcyBvZiB0aGUgY29ycmVzcG9uZGluZyByZXNwb25zZSBoZWFkZXJzLgogICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgY2FjaGVDb250cm9sQ29udGFpbnNOb0NhY2hlKCkgY29uc3Q7CkBAIC0y
NDYsNyArMjQ5LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNSYW5nZVJlcXVlc3RlZCB7IGZh
bHNlIH07CiAKIHByb3RlY3RlZDoKLSAgICBpbnQgbV9odHRwU3RhdHVzQ29kZSB7IDAgfTsKKyAg
ICBzaG9ydCBtX2h0dHBTdGF0dXNDb2RlIHsgMCB9OworICAgIG11dGFibGUgVXNlZExlZ2FjeVRM
UyBtX3VzZWRMZWdhY3lUTFMgeyBVc2VkTGVnYWN5VExTOjpObyB9OwogfTsKIAogaW5saW5lIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBhLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiBiKSB7IHJldHVybiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y29tcGFyZShhLCBiKTsg
fQpAQCAtMjc5LDYgKzI4Myw3IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmVuY29kZShF
bmNvZGUKICAgICBlbmNvZGVyLmVuY29kZUVudW0obV90eXBlKTsKICAgICBlbmNvZGVyLmVuY29k
ZUVudW0obV90YWludGluZyk7CiAgICAgZW5jb2RlciA8PCBtX2lzUmVkaXJlY3RlZDsKKyAgICBl
bmNvZGVyIDw8IG1fdXNlZExlZ2FjeVRMUzsKICAgICBlbmNvZGVyIDw8IG1faXNSYW5nZVJlcXVl
c3RlZDsKIH0KIApAQCAtMzI4LDYgKzMzMywxMiBAQCBib29sIFJlc291cmNlUmVzcG9uc2VCYXNl
OjpkZWNvZGUoRGVjb2RlCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXNwb25zZS5tX2lz
UmVkaXJlY3RlZCA9IGlzUmVkaXJlY3RlZDsKIAorICAgIE9wdGlvbmFsPFVzZWRMZWdhY3lUTFM+
IHVzZWRMZWdhY3lUTFM7CisgICAgZGVjb2RlciA+PiB1c2VkTGVnYWN5VExTOworICAgIGlmICgh
dXNlZExlZ2FjeVRMUykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJlc3BvbnNlLm1fdXNl
ZExlZ2FjeVRMUyA9ICp1c2VkTGVnYWN5VExTOworCiAgICAgYm9vbCBpc1JhbmdlUmVxdWVzdGVk
ID0gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpc1JhbmdlUmVxdWVzdGVkKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NTcwOSkKKysrIFNv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjkgQEAKKzIw
MjAtMDItMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBNYWtlIFdLV2ViVmlldy5fbmVnb3RpYXRlZExlZ2FjeVRMUyBhY2N1cmF0ZSB3aGVu
IGxvYWRpbmcgbWFpbiByZXNvdW9yY2UgZnJvbSBuZXR3b3JrIG9yIGNhY2hlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcyMDcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBQYWdlTG9hZFN0YXRlOjpk
aWRDb21taXRMb2FkLCBJIHdhcyByZXNldHRpbmcgdGhlIHZhbHVlIG9mIF9uZWdvdGlhdGVkTGVn
YWN5VExTIHRvIGZhbHNlLgorICAgICAgICBUaGF0IGNyZWF0ZWQgYSByYWNlIGNvbmRpdGlvbiB3
aGVuIGxvYWRpbmcgdGhlIG1haW4gcmVzb3VyY2UgYmVjYXVzZSB0aGUgTmV0d29ya1Byb2Nlc3Mg
d291bGQKKyAgICAgICAgbWVzc2FnZSB0aGUgVUlQcm9jZXNzIHNldHRpbmcgX25lZ290aWF0ZWRM
ZWdhY3lUTFMgdG8gZmFsc2UsIHdoaWxlIHRoZSBOZXR3b3JrUHJvY2VzcyB3b3VsZAorICAgICAg
ICBtZXNzYWdlIHRoZSBXZWJQcm9jZXNzIHdoaWNoIHdvdWxkIG1lc3NhZ2UgdGhlIFVJUHJvY2Vz
cyB0byBjYWxsIFBhZ2VMb2FkU3RhdGU6OmRpZENvbW1pdExvYWQKKyAgICAgICAgd2hpY2ggd291
bGQgcmVzZXQgaXQgdG8gZmFsc2UuICBOb3cgaXQgcmVzZXRzIGl0IHRvIHRoZSBjb3JyZWN0IHZh
bHVlLCB3aGF0ZXZlciBpdCBpcy4KKworICAgICAgICBVcGRhdGluZyB0aGUgUmVzb3VyY2VSZXNw
b25zZUJhc2Ugc2VyaWFsaXphdGlvbiBjb2RlIGhhcyB0aGUgZGVzaXJhYmxlIHNpZGUgZWZmZWN0
IHRoYXQgdGhlIGRpc2sKKyAgICAgICAgY2FjaGUgd2lsbCByZW1lbWJlciB3aGV0aGVyIGxlZ2Fj
eSBUTFMgd2FzIHVzZWQgdG8gZmV0Y2ggZWFjaCByZXNvdXJjZS4gIFRoaXMgd2lsbCBtYWtlIGl0
IHNvCisgICAgICAgIF9uZWdvdGlhdGVkTGVnYWN5VExTIGlzIHRydWUgaWYgd2UgcmVhZCBjb250
ZW50IGZyb20gdGhlIGRpc2sgY2FjaGUgdGhhdCB3YXMgb3JpZ2luYWxseSBmZXRjaGVkCisgICAg
ICAgIHVzaW5nIGxlZ2FjeSBUTFMuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gbm90IGluY3JlYXNl
IHRoZSBtZW1vcnkgZm9vdHByaW50IG9mIFJlc291cmNlUmVzcG9uc2UsIEkgY2hhbmdlZCBtX2h0
dHBTdGF0dXNDb2RlIGZyb20KKyAgICAgICAgYW4gaW50IHRvIGEgc2hvcnQuICBJdCBqdXN0IG5l
ZWRzIHRvIGJlIGFibGUgdG8gY292ZXIgdGhlIHZhbHVlcyAwLTYwMCBvciBzbywgd2hpY2ggcmVh
bGx5IG9ubHkgbmVlZHMgMTAgYml0cy4KKworICAgICAgICBDb3ZlcmVkIGJ5IG5ldyBBUEkgdGVz
dHMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNr
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQ
cmVmbGlnaHRDaGVja2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFU
YXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlUmVz
cG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6Om5lZ290aWF0ZWRMZWdh
Y3lUTFMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtE
YXRhVGFzay5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDbGllbnQ6Om5lZ290
aWF0ZWRMZWdhY3lUTFMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRh
c2tCbG9iOjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6Om5vdGlmeURp
ZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjp0aHJvdHRs
ZURlbGF5Q29tcGxldGVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6Om5lZ290aWF0
ZWRMZWdhY3lUTFMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpQaW5nTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9QaW5nTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtEYXRhVGFza0NvY29hLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29h
OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0
ZSBVUkxTZXNzaW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVSZXNwb25zZTpjb21wbGV0aW9uSGFuZGxl
cjpdKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDdXJsOjppbnZva2VEaWRSZWNl
aXZlUmVzcG9uc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFU
YXNrU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmRpc3Bh
dGNoRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUxvYWRTdGF0
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VMb2FkU3RhdGU6OmRpZENvbW1pdExvYWQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQ
YWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1By
b3Zpc2lvbmFsUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKToKKwogMjAyMC0wMi0wNCAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZp
eCBNYWMgQ01ha2UgYnVpbGQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAJKHJldmlzaW9u
IDI1NTcwOCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVm
bGlnaHRDaGVja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQg
TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWMKICAgICBtX25ldHdvcmtQcm9jZXNz
LT5hdXRoZW50aWNhdGlvbk1hbmFnZXIoKS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UobV9wYXJhbWV0ZXJzLnNlc3Npb25JRCwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELCBt
X3BhcmFtZXRlcnMudG9wT3JpZ2luID8gJm1fcGFyYW1ldGVycy50b3BPcmlnaW4tPmRhdGEoKSA6
IG51bGxwdHIsIGNoYWxsZW5nZSwgbmVnb3RpYXRlZExlZ2FjeVRMUywgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVz
cG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3Jr
Q09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxl
dGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2UiKTsKIApJbmRleDogU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5o
CShyZXZpc2lvbiAyNTU3MDgpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBS
ZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNo
YWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVn
YWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXImJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNv
bXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhF
cnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29y
a0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3Rh
bEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5j
cHAJKHJldmlzaW9uIDI1NTcwOCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0RhdGFUYXNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcsNyArOTcsNyBAQCB2b2lkIE5l
dHdvcmtEYXRhVGFzazo6c2NoZWR1bGVGYWlsdXJlKEZhCiAgICAgbV9mYWlsdXJlVGltZXIuc3Rh
cnRPbmVTaG90KDBfcyk7CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlUmVz
cG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNwb25zZUNvbXBsZXRpb25IYW5k
bGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtEYXRhVGFzazo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgTmVnb3RpYXRlZExlZ2FjeVRM
UyBuZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKHJlc3BvbnNlLmlzSFRUUDA5KCkpIHsKICAgICAgICAg
YXV0byB1cmwgPSByZXNwb25zZS51cmwoKTsKQEAgLTExMSwxNyArMTExLDExIEBAIHZvaWQgTmV0
d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UKICAgICAgICAgfQogICAgIH0KICAgICBp
ZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92
ZShyZXNwb25zZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgbV9jbGll
bnQtPmRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgbmVnb3RpYXRlZExlZ2Fj
eVRMUywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIGVsc2UKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUpOwogfQogCi12b2lkIE5ldHdvcmtE
YXRhVGFzazo6bmVnb3RpYXRlZExlZ2FjeVRMUygpIGNvbnN0Ci17Ci0gICAgaWYgKG1fY2xpZW50
KQotICAgICAgICBtX2NsaWVudC0+bmVnb3RpYXRlZExlZ2FjeVRMUygpOwotfQotCiBib29sIE5l
dHdvcmtEYXRhVGFzazo6c2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkgY29u
c3QKIHsKICAgICByZXR1cm4gbV9jbGllbnQgPyBtX2NsaWVudC0+c2hvdWxkQ2FwdHVyZUV4dHJh
TmV0d29ya0xvYWRNZXRyaWNzKCkgOiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAkocmV2aXNpb24gMjU1NzA4KQorKysgU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAkod29ya2luZyBjb3B5
KQpAQCAtNjIsNyArNjIsNyBAQCBjbGFzcyBOZXR3b3JrRGF0YVRhc2tDbGllbnQgewogcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENv
bXBsZXRpb25IYW5kbGVyJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNoYWxs
ZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5
VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNl
Q29tcGxldGlvbkhhbmRsZXImJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBS
ZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwg
Y29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRl
c0V4cGVjdGVkVG9TZW5kKSA9IDA7CkBAIC03MCw3ICs3MCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgY2Fubm90U2hvd1VSTCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2FzQmxvY2tl
ZEJ5UmVzdHJpY3Rpb25zKCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIG5lZ290aWF0ZWRMZWdh
Y3lUTFMoKSBjb25zdCB7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0
d29ya0xvYWRNZXRyaWNzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZvaWQgZGlk
Q29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCkBA
IC05Miw4ICs5MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlQW5kQ2FuY2VsKCkgPSAwOwogCi0gICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNv
bXBsZXRpb25IYW5kbGVyJiYpOwotICAgIHZvaWQgbmVnb3RpYXRlZExlZ2FjeVRMUygpIGNvbnN0
OworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKTsKICAg
ICBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcygpIGNvbnN0OwogCiAg
ICAgZW51bSBjbGFzcyBTdGF0ZSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAJKHJldmlzaW9uIDI1NTcwOCkKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI5MCw3ICsyOTAsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6
OmRpc3BhdGNoRGlkUmVjCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGRpZFJlY2VpdmVS
ZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3Zl
KHByb3RlY3RlZFRoaXMpLCBlcnJvckNvZGVdKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIHsK
KyAgICBkaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSksIE5lZ290aWF0ZWRMZWdh
Y3lUTFM6Ok5vLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyks
IGVycm9yQ29kZV0oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgewogICAgICAgICBMT0coTmV0
d29ya1Nlc3Npb24sICIlcCAtIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRpZFJlY2VpdmVSZXNwb25z
ZSBjb21wbGV0aW9uSGFuZGxlciAoJXUpIiwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBv
bGljeUFjdGlvbikpOwogCiAgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDYW5jZWxpbmcg
fHwgbV9zdGF0ZSA9PSBTdGF0ZTo6Q29tcGxldGVkKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAkocmV2aXNpb24gMjU1NzA4KQorKysgU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIwNiwxMiArMjA2LDcgQEAgdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZUNoYWxsZW5n
ZShBdQogICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5hdXRoZW50aWNhdGlvbk1hbmFnZXIoKS5k
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UobV90YXNrLT5zZXNzaW9uSUQoKSwgbV9w
YXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELCBtX3BhcmFtZXRlcnMudG9wT3JpZ2luID8gJm1fcGFy
YW1ldGVycy50b3BPcmlnaW4tPmRhdGEoKSA6IG51bGxwdHIsIGNoYWxsZW5nZSwgbmVnb3RpYXRl
ZExlZ2FjeVRMUywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdv
cmtMb2FkOjpuZWdvdGlhdGVkTGVnYWN5VExTKCkgY29uc3QKLXsKLSAgICBtX25ldHdvcmtQcm9j
ZXNzLT5hdXRoZW50aWNhdGlvbk1hbmFnZXIoKS5uZWdvdGlhdGVkTGVnYWN5VExTKG1fcGFyYW1l
dGVycy53ZWJQYWdlUHJveHlJRCk7Ci19Ci0KLXZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVS
ZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlvbkhh
bmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVS
ZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0ZWRMZWdhY3lUTFMg
bmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgQVNTRVJU
KCFtX3Rocm90dGxlKTsKQEAgLTIyNiwxNiArMjIxLDE5IEBAIHZvaWQgTmV0d29ya0xvYWQ6OmRp
ZFJlY2VpdmVSZXNwb25zZShSZXMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG5vdGlm
eURpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOworICAgIGlmIChuZWdvdGlhdGVkTGVnYWN5VExTID09IE5lZ290aWF0ZWRMZWdh
Y3lUTFM6OlllcykKKyAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+YXV0aGVudGljYXRpb25NYW5h
Z2VyKCkubmVnb3RpYXRlZExlZ2FjeVRMUyhtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQpOwor
ICAgIAorICAgIG5vdGlmeURpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgbmVn
b3RpYXRlZExlZ2FjeVRMUywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lk
IE5ldHdvcmtMb2FkOjpub3RpZnlEaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYm
IHJlc3BvbnNlLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIE5ldHdvcmtMb2FkOjpub3RpZnlEaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNw
b25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVkTGVnYWN5VExTIG5lZ290aWF0ZWRMZWdhY3lUTFMs
IFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291
cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yayk7CiAgICAgaWYgKG1fcGFyYW1ldGVycy5uZWVk
c0NlcnRpZmljYXRlSW5mbykKLSAgICAgICAgcmVzcG9uc2UuaW5jbHVkZUNlcnRpZmljYXRlSW5m
bygpOworICAgICAgICByZXNwb25zZS5pbmNsdWRlQ2VydGlmaWNhdGVJbmZvKG5lZ290aWF0ZWRM
ZWdhY3lUTFMgPT0gTmVnb3RpYXRlZExlZ2FjeVRMUzo6WWVzID8gVXNlZExlZ2FjeVRMUzo6WWVz
IDogVXNlZExlZ2FjeVRMUzo6Tm8pOwogCiAgICAgbV9jbGllbnQuZ2V0KCkuZGlkUmVjZWl2ZVJl
c3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9
CkBAIC0yNjUsNyArMjYzLDcgQEAgdm9pZCBOZXR3b3JrTG9hZDo6dGhyb3R0bGVEZWxheUNvbXBs
ZXRlZAogCiAgICAgYXV0byB0aHJvdHRsZSA9IFdURk1vdmUobV90aHJvdHRsZSk7CiAKLSAgICBu
b3RpZnlEaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZSh0aHJvdHRsZS0+cmVzcG9uc2UpLCBXVEZN
b3ZlKHRocm90dGxlLT5yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgbm90aWZ5RGlk
UmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUodGhyb3R0bGUtPnJlc3BvbnNlKSwgTmVnb3RpYXRlZExl
Z2FjeVRMUzo6Tm8sIFdURk1vdmUodGhyb3R0bGUtPnJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIp
KTsKIH0KIAogdm9pZCBOZXR3b3JrTG9hZDo6ZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRl
c1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgJKHJldmlzaW9uIDI1NTcwOCkKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAkod29ya2luZyBjb3B5
KQpAQCAtNzQsMTYgKzc0LDE1IEBAIHByaXZhdGU6CiAgICAgLy8gTmV0d29ya0RhdGFUYXNrQ2xp
ZW50CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRp
b25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3Jl
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVu
Z2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIm
JikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVy
JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikg
ZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWlu
dDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKICAgICB2b2lkIHdhc0Jsb2Nr
ZWQoKSBmaW5hbDsKICAgICB2b2lkIGNhbm5vdFNob3dVUkwoKSBmaW5hbDsKICAgICB2b2lkIHdh
c0Jsb2NrZWRCeVJlc3RyaWN0aW9ucygpIGZpbmFsOwotICAgIHZvaWQgbmVnb3RpYXRlZExlZ2Fj
eVRMUygpIGNvbnN0IGZpbmFsOwogCi0gICAgdm9pZCBub3RpZnlEaWRSZWNlaXZlUmVzcG9uc2Uo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYp
OworICAgIHZvaWQgbm90aWZ5RGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYm
KTsKICAgICB2b2lkIHRocm90dGxlRGVsYXlDb21wbGV0ZWQoKTsKIAogICAgIHN0ZDo6cmVmZXJl
bmNlX3dyYXBwZXI8TmV0d29ya0xvYWRDbGllbnQ+IG1fY2xpZW50OwpJbmRleDogU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCShy
ZXZpc2lvbiAyNTU3MDgpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw4IEBAIGNsYXNzIE5l
dHdvcmtMb2FkQ2hlY2tlcjsKIGNsYXNzIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s7CiBjbGFzcyBX
ZWJTV1NlcnZlckNvbm5lY3Rpb247CiAKK2VudW0gY2xhc3MgTmVnb3RpYXRlZExlZ2FjeVRMUyA6
IGJvb2w7CisKIHN0cnVjdCBSZXNvdXJjZUxvYWRJbmZvOwogCiBuYW1lc3BhY2UgTmV0d29ya0Nh
Y2hlIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCShy
ZXZpc2lvbiAyNTU3MDgpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2Fk
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQgUGluZ0xvYWQ6OmRp
ZFJlY2VpdmVDaGFsbGVuZ2UoQXV0aGUKICAgICBkaWRGaW5pc2goUmVzb3VyY2VFcnJvciB7IFN0
cmluZygpLCAwLCBjdXJyZW50VVJMKCksICJGYWlsZWQgSFRUUCBhdXRoZW50aWNhdGlvbiJfcywg
UmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9KTsKIH0KIAotdm9pZCBQaW5nTG9h
ZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9u
c2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBQaW5nTG9hZDo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgTmVnb3RpYXRl
ZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZSAtIGh0
dHBTdGF0dXNDb2RlOiAlZCIsIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpOwogICAgIGF1dG8g
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1BpbmdMb2FkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9QaW5nTG9hZC5oCShyZXZpc2lvbiAyNTU3MDgpCisrKyBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RD
b21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2Uo
V2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywg
Q2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25I
YW5kbGVyJiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9u
SGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0
cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1Nl
bnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkgZmluYWw7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVN0b3JhZ2UuaAkocmV2aXNpb24gMjU1NzA4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw3
ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IGFwcHJveGltYXRlU2l6ZSgpIGNvbnN0Owog
CiAgICAgLy8gSW5jcmVtZW50aW5nIHRoaXMgbnVtYmVyIHdpbGwgZGVsZXRlIGFsbCBleGlzdGlu
ZyBjYWNoZSBjb250ZW50IGZvciBldmVyeW9uZS4gRG8geW91IHJlYWxseSBuZWVkIHRvIGRvIGl0
PwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB2ZXJzaW9uID0gMTU7CisgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIHZlcnNpb24gPSAxNjsKIAogICAgIFN0cmluZyBiYXNlUGF0aElzb2xhdGVk
Q29weSgpIGNvbnN0OwogICAgIFN0cmluZyB2ZXJzaW9uUGF0aCgpIGNvbnN0OwpJbmRleDogU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EuaAkocmV2aXNpb24gMjU1NzA4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCSh3b3JraW5nIGNvcHkpCkBAIC01
NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFs
Qnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBO
ZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICB2
b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBj
b25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhh
bmRsZXImJik7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVy
JiYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
Jik7CiAKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxl
dGlvbkhhbmRsZXImJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtEYXRhVGFza0NvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0JKHJldmlzaW9uIDI1NTcw
OCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNr
Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTM3MywxMCArMzczLDEwIEBAIHZvaWQgTmV0d29y
a0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVEYXQKICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2Vp
dmVEYXRhKFdURk1vdmUoZGF0YSkpOwogfQogCi12b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpk
aWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBX
ZWJLaXQ6OlJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0ZWRMZWdhY3lUTFMgbmVnb3RpYXRlZExl
Z2FjeVRMUywgV2ViS2l0OjpSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgRU1JVF9TSUdOUE9TVChtX3Rhc2ssICJyZWNlaXZlZCByZXNwb25zZSBo
ZWFkZXJzIik7Ci0gICAgTmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92
ZShyZXNwb25zZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBOZXR3b3JrRGF0
YVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgbmVnb3RpYXRlZExl
Z2FjeVRMUywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtE
YXRhVGFza0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQpJ
bmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Nlc3Npb25Db2NvYS5tbQkocmV2aXNpb24gMjU1NzA4KQorKysgU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC04MTgsMjQgKzgxOCwyMiBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lv
biAqKXNlc3NpCiAgICAgaWYgKGF1dG8qIG5ldHdvcmtEYXRhVGFzayA9IFtzZWxmIGV4aXN0aW5n
VGFzazpkYXRhVGFza10pIHsKICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAot
ICAgICAgICBib29sIG5lZ290aWF0ZWRMZWdhY3lUTFMgPSBmYWxzZTsKKyAgICAgICAgTmVnb3Rp
YXRlZExlZ2FjeVRMUyBuZWdvdGlhdGVkTGVnYWN5VExTID0gTmVnb3RpYXRlZExlZ2FjeVRMUzo6
Tm87CiAjaWYgSEFWRShUTFNfUFJPVE9DT0xfVkVSU0lPTl9UKQogICAgICAgICBOU1VSTFNlc3Np
b25UYXNrVHJhbnNhY3Rpb25NZXRyaWNzICptZXRyaWNzID0gZGF0YVRhc2suX2luY29tcGxldGVU
YXNrTWV0cmljcy50cmFuc2FjdGlvbk1ldHJpY3MubGFzdE9iamVjdDsKICAgICAgICAgYXV0byB0
bHNWZXJzaW9uID0gKHRsc19wcm90b2NvbF92ZXJzaW9uX3QpbWV0cmljcy5uZWdvdGlhdGVkVExT
UHJvdG9jb2xWZXJzaW9uLnVuc2lnbmVkU2hvcnRWYWx1ZTsKICAgICAgICAgaWYgKHRsc1ZlcnNp
b24gPT0gdGxzX3Byb3RvY29sX3ZlcnNpb25fVExTdjEwIHx8IHRsc1ZlcnNpb24gPT0gdGxzX3By
b3RvY29sX3ZlcnNpb25fVExTdjExKQotICAgICAgICAgICAgbmVnb3RpYXRlZExlZ2FjeVRMUyA9
IHRydWU7CisgICAgICAgICAgICBuZWdvdGlhdGVkTGVnYWN5VExTID0gTmVnb3RpYXRlZExlZ2Fj
eVRMUzo6WWVzOwogICAgICAgICBVTlVTRURfUEFSQU0obWV0cmljcyk7CiAjZWxzZSAvLyBXZSBk
byBub3QgbmVlZCB0byBjaGVjayBfVExTTmVnb3RpYXRlZFByb3RvY29sVmVyc2lvbiBpZiB3ZSBo
YXZlIG1ldHJpY3MubmVnb3RpYXRlZFRMU1Byb3RvY29sVmVyc2lvbiBiZWNhdXNlIGl0IHdvcmtz
IGF0IHJlc3BvbnNlIHRpbWUgZXZlbiBiZWZvcmUgcmRhcjovL3Byb2JsZW0vNTY1MjI2MDEKICAg
ICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgaWYgKFtk
YXRhVGFzayByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9UTFNOZWdvdGlhdGVkUHJvdG9j
b2xWZXJzaW9uKV0pIHsKICAgICAgICAgICAgIFNTTFByb3RvY29sIHRsc1ZlcnNpb24gPSBbZGF0
YVRhc2sgX1RMU05lZ290aWF0ZWRQcm90b2NvbFZlcnNpb25dOwogICAgICAgICAgICAgaWYgKHRs
c1ZlcnNpb24gPT0ga1RMU1Byb3RvY29sMTEgfHwgdGxzVmVyc2lvbiA9PSBrVExTUHJvdG9jb2wx
KQotICAgICAgICAgICAgICAgIG5lZ290aWF0ZWRMZWdhY3lUTFMgPSB0cnVlOworICAgICAgICAg
ICAgICAgIG5lZ290aWF0ZWRMZWdhY3lUTFMgPSBOZWdvdGlhdGVkTGVnYWN5VExTOjpZZXM7CiAg
ICAgICAgIH0KICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAjZW5k
aWYKLSAgICAgICAgaWYgKG5lZ290aWF0ZWRMZWdhY3lUTFMpCi0gICAgICAgICAgICBuZXR3b3Jr
RGF0YVRhc2stPm5lZ290aWF0ZWRMZWdhY3lUTFMoKTsKICAgICAgICAgCiAgICAgICAgIC8vIEF2
b2lkIE1JTUUgdHlwZSBzbmlmZmluZyBpZiB0aGUgcmVzcG9uc2UgY29tZXMgYmFjayBhcyAzMDQg
Tm90IE1vZGlmaWVkLgogICAgICAgICBpbnQgc3RhdHVzQ29kZSA9IFtyZXNwb25zZSBpc0tpbmRP
ZkNsYXNzOk5TSFRUUFVSTFJlc3BvbnNlLmNsYXNzXSA/IFsoTlNIVFRQVVJMUmVzcG9uc2UgKily
ZXNwb25zZSBzdGF0dXNDb2RlXSA6IDA7CkBAIC04NTQsNyArODUyLDcgQEAgLSAodm9pZClVUkxT
ZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaQogICAgICAgICBjb3B5VGltaW5nRGF0YShbZGF0
YVRhc2sgX3RpbWluZ0RhdGFdLCByZXNvdXJjZVJlc3BvbnNlLmRlcHJlY2F0ZWROZXR3b3JrTG9h
ZE1ldHJpY3MoKSk7CiAKICAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBCbG9j
a19jb3B5KGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICAgICAgbmV0d29ya0RhdGFUYXNrLT5kaWRS
ZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShyZXNvdXJjZVJlc3BvbnNlKSwgW2NvbXBsZXRpb25IYW5k
bGVyQ29weSwgdGFza0lkZW50aWZpZXJdKFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rp
b24pIHsKKyAgICAgICAgbmV0d29ya0RhdGFUYXNrLT5kaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92
ZShyZXNvdXJjZVJlc3BvbnNlKSwgbmVnb3RpYXRlZExlZ2FjeVRMUywgW2NvbXBsZXRpb25IYW5k
bGVyQ29weSwgdGFza0lkZW50aWZpZXJdKFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rp
b24pIHsKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgICAgICAgICBMT0coTmV0d29ya1Nlc3Npb24s
ICIlbGx1IGRpZFJlY2VpdmVSZXNwb25zZSBjb21wbGV0aW9uSGFuZGxlciAoJWQpIiwgdGFza0lk
ZW50aWZpZXIsIHBvbGljeUFjdGlvbik7CiAjZWxzZQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAko
cmV2aXNpb24gMjU1NzA4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05l
dHdvcmtEYXRhVGFza0N1cmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjQsNyArMjI0LDcgQEAg
Ym9vbCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpzaG91bGRSZWRpcmVjdAogCiB2b2lkIE5ldHdvcmtE
YXRhVGFza0N1cmw6Omludm9rZURpZFJlY2VpdmVSZXNwb25zZSgpCiB7Ci0gICAgZGlkUmVjZWl2
ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UobV9yZXNwb25zZSksIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyldKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIHsKKyAgICBk
aWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZShtX3Jlc3BvbnNlKSwgTmVnb3RpYXRl
ZExlZ2FjeVRMUzo6Tm8sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKFBv
bGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIHsKICAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6
OkNhbmNlbGluZyB8fCBtX3N0YXRlID09IFN0YXRlOjpDb21wbGV0ZWQpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3Jr
RGF0YVRhc2tTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAJKHJldmlzaW9uIDI1NTcwOCkKKysrIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzc4LDcgKzM3OCw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291
cDo6ZGlzcGF0Y2hEaWRSZWMKICAgICBkZXByZWNhdGVkUmVzcG9uc2VNZXRyaWNzLnJlcXVlc3RT
dGFydCA9IG1fbmV0d29ya0xvYWRNZXRyaWNzLnJlcXVlc3RTdGFydDsKICAgICBkZXByZWNhdGVk
UmVzcG9uc2VNZXRyaWNzLnJlc3BvbnNlU3RhcnQgPSBtX25ldHdvcmtMb2FkTWV0cmljcy5yZXNw
b25zZVN0YXJ0OwogCi0gICAgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UobV9y
ZXNwb25zZSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKFBvbGljeUFj
dGlvbiBwb2xpY3lBY3Rpb24pIHsKKyAgICBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNw
b25zZShtX3Jlc3BvbnNlKSwgTmVnb3RpYXRlZExlZ2FjeVRMUzo6Tm8sIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIHsKICAg
ICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNhbmNlbGluZyB8fCBtX3N0YXRlID09IFN0YXRl
OjpDb21wbGV0ZWQpIHsKICAgICAgICAgICAgIGNsZWFyUmVxdWVzdCgpOwogICAgICAgICAgICAg
cmV0dXJuOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5jcHAJ
KHJldmlzaW9uIDI1NTcwOCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3Rh
dGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTcsNyArMzE3LDcgQEAgdm9pZCBQYWdlTG9hZFN0
YXRlOjpkaWRGYWlsUHJvdmlzaW9uYWxMbwogICAgIG1fdW5jb21taXR0ZWRTdGF0ZS51bnJlYWNo
YWJsZVVSTCA9IG1fbGFzdFVucmVhY2hhYmxlVVJMOwogfQogCi12b2lkIFBhZ2VMb2FkU3RhdGU6
OmRpZENvbW1pdExvYWQoY29uc3QgVHJhbnNhY3Rpb246OlRva2VuJiB0b2tlbiwgV2ViQ2VydGlm
aWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgaGFzSW5zZWN1cmVDb250ZW50KQordm9p
ZCBQYWdlTG9hZFN0YXRlOjpkaWRDb21taXRMb2FkKGNvbnN0IFRyYW5zYWN0aW9uOjpUb2tlbiYg
dG9rZW4sIFdlYkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBib29sIGhhc0luc2Vj
dXJlQ29udGVudCwgYm9vbCB1c2VkTGVnYWN5VExTKQogewogICAgIEFTU0VSVF9VTlVTRUQodG9r
ZW4sICZ0b2tlbi5tX3BhZ2VMb2FkU3RhdGUgPT0gdGhpcyk7CiAgICAgQVNTRVJUKG1fdW5jb21t
aXR0ZWRTdGF0ZS5zdGF0ZSA9PSBTdGF0ZTo6UHJvdmlzaW9uYWwpOwpAQCAtMzI4LDcgKzMyOCw3
IEBAIHZvaWQgUGFnZUxvYWRTdGF0ZTo6ZGlkQ29tbWl0TG9hZChjb25zdCAKIAogICAgIG1fdW5j
b21taXR0ZWRTdGF0ZS51cmwgPSBtX3VuY29tbWl0dGVkU3RhdGUucHJvdmlzaW9uYWxVUkw7CiAg
ICAgbV91bmNvbW1pdHRlZFN0YXRlLnByb3Zpc2lvbmFsVVJMID0gU3RyaW5nKCk7Ci0gICAgbV91
bmNvbW1pdHRlZFN0YXRlLm5lZ290aWF0ZWRMZWdhY3lUTFMgPSBmYWxzZTsKKyAgICBtX3VuY29t
bWl0dGVkU3RhdGUubmVnb3RpYXRlZExlZ2FjeVRMUyA9IHVzZWRMZWdhY3lUTFM7CiAKICAgICBt
X3VuY29tbWl0dGVkU3RhdGUudGl0bGUgPSBTdHJpbmcoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmgJKHJldmlzaW9uIDI1NTcwOCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTYzLDcg
KzE2Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclBy
b3Zpc2lvbmFsTG9hZChjb25zdCBUcmFuc2FjdGlvbjo6VG9rZW4mLCBjb25zdCBTdHJpbmcmIHVy
bCk7CiAgICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFRyYW5zYWN0aW9uOjpU
b2tlbiYpOwogCi0gICAgdm9pZCBkaWRDb21taXRMb2FkKGNvbnN0IFRyYW5zYWN0aW9uOjpUb2tl
biYsIFdlYkNlcnRpZmljYXRlSW5mbyYsIGJvb2wgaGFzSW5zZWN1cmVDb250ZW50KTsKKyAgICB2
b2lkIGRpZENvbW1pdExvYWQoY29uc3QgVHJhbnNhY3Rpb246OlRva2VuJiwgV2ViQ2VydGlmaWNh
dGVJbmZvJiwgYm9vbCBoYXNJbnNlY3VyZUNvbnRlbnQsIGJvb2wgdXNlZExlZ2FjeVRMUyk7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkKGNvbnN0IFRyYW5zYWN0aW9uOjpUb2tlbiYpOwogICAgIHZv
aWQgZGlkRmFpbExvYWQoY29uc3QgVHJhbnNhY3Rpb246OlRva2VuJik7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAJKHJldmlz
aW9uIDI1NTcwOCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY0LDcgKzI2NCw3IEBAIHZvaWQgUHJvdmlzaW9u
YWxQYWdlUHJveHk6OmRpZEZhaWxQcm92aXMKICAgICBtX3BhZ2UuZGlkRmFpbFByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIGZyYW1lSUQsIFdURk1vdmUo
ZnJhbWVTZWN1cml0eU9yaWdpbiksIG5hdmlnYXRpb25JRCwgcHJvdmlzaW9uYWxVUkwsIGVycm9y
LCB3aWxsQ29udGludWVMb2FkaW5nLCB1c2VyRGF0YSk7IC8vIE1heSBkZWxldGUgfHRoaXN8Lgog
fQogCi12b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUoRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3Qg
ZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0
ZUluZm8sIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFz
SW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRh
JiB1c2VyRGF0YSkKK3ZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JG
cmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1
aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNl
cnRpZmljYXRlSW5mbywgYm9vbCB1c2VkTGVnYWN5VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9j
dW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5z
ZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgaWYgKCF2YWxp
ZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI3
NCw3ICsyNzQsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDb21taXRMb2FkCiAg
ICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VJRCk7CiAKICAgICBtX3dhc0NvbW1p
dHRlZCA9IHRydWU7Ci0gICAgbV9wYWdlLmNvbW1pdFByb3Zpc2lvbmFsUGFnZShmcmFtZUlELCBu
YXZpZ2F0aW9uSUQsIG1pbWVUeXBlLCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgZnJh
bWVMb2FkVHlwZSwgY2VydGlmaWNhdGVJbmZvLCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBmb3Jj
ZWRIYXNJbnNlY3VyZUNvbnRlbnQsIHVzZXJEYXRhKTsgLy8gV2lsbCBkZWxldGUgfHRoaXN8Lgor
ICAgIG1fcGFnZS5jb21taXRQcm92aXNpb25hbFBhZ2UoZnJhbWVJRCwgbmF2aWdhdGlvbklELCBt
aW1lVHlwZSwgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIGZyYW1lTG9hZFR5cGUsIGNl
cnRpZmljYXRlSW5mbywgdXNlZExlZ2FjeVRMUywgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgZm9y
Y2VkSGFzSW5zZWN1cmVDb250ZW50LCB1c2VyRGF0YSk7IC8vIFdpbGwgZGVsZXRlIHx0aGlzfC4K
IH0KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlv
bkRhdGEoY29uc3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYgc3RvcmUsIEZyYW1lSWRlbnRpZmll
ciBmcmFtZUlEKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdl
UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25h
bFBhZ2VQcm94eS5oCShyZXZpc2lvbiAyNTU3MDgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNyArMTIyLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBTdHJp
bmcmIHNvdXJjZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTFN0cmluZywg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZENyZWF0ZU1haW5GcmFtZShX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExv
YWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgVVJMJiYsIFVSTCYmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYpOwotICAgIHZv
aWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3Vz
dG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3Jl
OjpDZXJ0aWZpY2F0ZUluZm8mLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFs
PFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBj
b25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFt
ZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mLCBib29sIHVzZWRMZWdh
Y3lUTFMsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFz
SW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRh
Jik7CiAgICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5
T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxV
UkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBXZWJDb3JlOjpXaWxsQ29udGludWVM
b2FkaW5nLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgc3RhcnRVUkxTY2hlbWVUYXNrKFVS
TFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYpOwogICAgIHZvaWQgYmFja0ZvcndhcmRHb1RvSXRlbShj
b25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgY29uc3QgV2ViQmFja0ZvcndhcmRM
aXN0Q291bnRzJik+JiYpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCShyZXZpc2lvbiAyNTU3MDgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTYxLDcgKzMxNjEsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvCiAgICAgc2VuZGVyLT5zZW5kKGFjdGlv
biwgbmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpIDogMCwgZG93bmxvYWRJ
RCwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmNv
bW1pdFByb3Zpc2lvbmFsUGFnZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29u
dGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0
aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50
LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJl
Q29udGVudCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmNv
bW1pdFByb3Zpc2lvbmFsUGFnZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29u
dGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0
aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCB1c2VkTGVnYWN5VExTLCBib29sIGNv
bnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVu
dD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7
CiAgICAgQVNTRVJUKG1fcHJvdmlzaW9uYWxQYWdlKTsKICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJjb21taXRQcm92aXNpb25hbFBhZ2U6IG5ld1BJRCA9ICVpIiwgbV9wcm92
aXNpb25hbFBhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzSWRlbnRpZmllcigpKTsKQEAgLTMxOTUsNyAr
MzE5NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNpb25hbFBhZ2UKICAgICBj
b25zdCBhdXRvIG9sZFdlYlBhZ2VJRCA9IG1fd2ViUGFnZUlEOwogICAgIHN3YXBUb1Byb3Zpc2lv
bmFsUGFnZShzdGQ6OmV4Y2hhbmdlKG1fcHJvdmlzaW9uYWxQYWdlLCBudWxscHRyKSk7CiAKLSAg
ICBkaWRDb21taXRMb2FkRm9yRnJhbWUoZnJhbWVJRCwgbmF2aWdhdGlvbklELCBtaW1lVHlwZSwg
ZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIGZyYW1lTG9hZFR5cGUsIGNlcnRpZmljYXRl
SW5mbywgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCB1
c2VyRGF0YSk7CisgICAgZGlkQ29tbWl0TG9hZEZvckZyYW1lKGZyYW1lSUQsIG5hdmlnYXRpb25J
RCwgbWltZVR5cGUsIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBmcmFtZUxvYWRUeXBl
LCBjZXJ0aWZpY2F0ZUluZm8sIHVzZWRMZWdhY3lUTFMsIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQs
IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgdXNlckRhdGEpOwogCiAgICAgbV9pbnNwZWN0b3JD
b250cm9sbGVyLT5kaWRDb21taXRQcm92aXNpb25hbFBhZ2Uob2xkV2ViUGFnZUlELCBtX3dlYlBh
Z2VJRCk7CiB9CkBAIC00NDgxLDcgKzQ0ODEsNyBAQCBzdGF0aWMgT3B0aW9uU2V0PENyb3NzU2l0
ZU5hdmlnYXRpb25EYXRhCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1p
dExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFBy
b3ZpZGVyLCB1aW50MzJfdCBvcGFxdWVGcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0
aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50
LCBPcHRpb25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+IGhhc0luc2VjdXJlQ29udGVudCwgY29uc3Qg
VXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JG
cmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1
aW50MzJfdCBvcGFxdWVGcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUlu
Zm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCB1c2VkTGVnYWN5VExTLCBib29sIGNvbnRhaW5zUGx1
Z2luRG9jdW1lbnQsIE9wdGlvbmFsPEhhc0luc2VjdXJlQ29udGVudD4gaGFzSW5zZWN1cmVDb250
ZW50LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgTE9HKExvYWRpbmcsICIoTG9h
ZGluZykgV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGRpZENvbW1pdExvYWRGb3JGcmFtZSBpbiBu
YXZpZ2F0aW9uICUiIFBSSXU2NCwgbV9pZGVudGlmaWVyLnRvVUludDY0KCksIG5hdmlnYXRpb25J
RCk7CiAgICAgTE9HKEJhY2tGb3J3YXJkLCAiKEJhY2svRm9yd2FyZCkgQWZ0ZXIgbG9hZCBjb21t
aXQsIGJhY2svZm9yd2FyZCBsaXN0IGlzIG5vdzolcyIsIG1fYmFja0ZvcndhcmRMaXN0LT5sb2dn
aW5nU3RyaW5nKCkpOwpAQCAtNDUyMyw3ICs0NTIzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZENvbW1pdExvYWRGb3JGcmFtZQogICAgIGJvb2wgbWFya1BhZ2VJbnNlY3VyZSA9IGhhc0luc2Vj
dXJlQ29udGVudCA/IGhhc0luc2VjdXJlQ29udGVudC52YWx1ZSgpID09IEhhc0luc2VjdXJlQ29u
dGVudDo6WWVzIDogbV90cmVhdHNTSEExQ2VydGlmaWNhdGVzQXNJbnNlY3VyZSAmJiBjZXJ0aWZp
Y2F0ZUluZm8uY29udGFpbnNOb25Sb290U0hBMVNpZ25lZENlcnRpZmljYXRlKCk7CiAKICAgICBp
ZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpIHsKLSAgICAgICAgbV9wYWdlTG9hZFN0YXRlLmRpZENv
bW1pdExvYWQodHJhbnNhY3Rpb24sIHdlYkNlcnRpZmljYXRlSW5mbywgbWFya1BhZ2VJbnNlY3Vy
ZSk7CisgICAgICAgIG1fcGFnZUxvYWRTdGF0ZS5kaWRDb21taXRMb2FkKHRyYW5zYWN0aW9uLCB3
ZWJDZXJ0aWZpY2F0ZUluZm8sIG1hcmtQYWdlSW5zZWN1cmUsIHVzZWRMZWdhY3lUTFMpOwogICAg
ICAgICBtX3Nob3VsZFN1cHByZXNzTmV4dEF1dG9tYXRpY05hdmlnYXRpb25TbmFwc2hvdCA9IGZh
bHNlOwogICAgIH0gZWxzZSBpZiAobWFya1BhZ2VJbnNlY3VyZSkKICAgICAgICAgbV9wYWdlTG9h
ZFN0YXRlLmRpZERpc3BsYXlPclJ1bkluc2VjdXJlQ29udGVudCh0cmFuc2FjdGlvbik7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjU1NzA4KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTE1ODcsNyArMTU4Nyw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgUHJvdmlzaW9uYWxQ
YWdlUHJveHkqIHByb3Zpc2lvbmFsUGFnZVByb3h5KCkgY29uc3QgeyByZXR1cm4gbV9wcm92aXNp
b25hbFBhZ2UuZ2V0KCk7IH0KLSAgICB2b2lkIGNvbW1pdFByb3Zpc2lvbmFsUGFnZShXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJh
bWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiwgYm9vbCBjb250YWlu
c1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZv
cmNlZEhhc0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGNvbW1p
dFByb3Zpc2lvbmFsUGFnZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRl
bnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlm
aWNhdGVJbmZvJiwgYm9vbCB1c2VkTGVnYWN5VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1l
bnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1
cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYpOwogCiAgICAgLy8gTG9naWMgc2hhcmVkIGJldHdl
ZW4gdGhlIFdlYlBhZ2VQcm94eSBhbmQgdGhlIFByb3Zpc2lvbmFsUGFnZVByb3h5LgogICAgIHZv
aWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
VVJMJiYsIFVSTCYmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYpOwpAQCAtMTczNyw3
ICsxNzM3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9y
RnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZENoYW5nZVByb3Zp
c2lvbmFsVVJMRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIFVSTCYmKTsKICAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFt
ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYm
IGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5n
JiBwcm92aXNpb25hbFVSTCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFdlYkNvcmU6
OldpbGxDb250aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBkaWRDb21t
aXRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50
UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmlj
YXRlSW5mbyYsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6
SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJE
YXRhJik7CisgICAgdm9pZCBkaWRDb21taXRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJv
b2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9hZFR5cGUs
IGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYsIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9v
bCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNv
bnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2
b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlk
RmluaXNoTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkRmFpbExvYWRGb3JGcmFt
ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFVzZXJEYXRhJik7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lv
biAyNTU3MDgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTEyNiw3ICsxMjYsNyBAQCBtZXNzYWdlcyAtPiBXZWJQ
YWdlUHJveHkgewogICAgIERpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCiAgICAgRGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JG
cmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBVUkwgdXJsKQogICAgIERpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFN0cmluZyBw
cm92aXNpb25hbFVSTCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgZW51bTpib29sIFdl
YkNvcmU6OldpbGxDb250aW51ZUxvYWRpbmcgd2lsbENvbnRpbnVlTG9hZGluZywgV2ViS2l0OjpV
c2VyRGF0YSB1c2VyRGF0YSkKLSAgICBEaWRDb21taXRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU3RyaW5nIG1pbWVU
eXBlLCBib29sIGhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgbG9hZFR5cGUsIFdl
YkNvcmU6OkNlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgY29udGFpbnNQbHVn
aW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRI
YXNJbnNlY3VyZUNvbnRlbnQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCisgICAgRGlkQ29t
bWl0TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIFN0cmluZyBtaW1lVHlwZSwgYm9vbCBoYXNDdXN0b21Db250ZW50UHJv
dmlkZXIsIHVpbnQzMl90IGxvYWRUeXBlLCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8gY2VydGlm
aWNhdGVJbmZvLCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVu
dCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3Vy
ZUNvbnRlbnQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkRmFpbExvYWRGb3JG
cmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJE
YXRhKQogICAgIERpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYktpdDo6VXNlckRhdGEg
dXNlckRhdGEpCiAgICAgRGlkRmluaXNoTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYktpdDo6VXNlckRhdGEgdXNl
ckRhdGEpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDI1
NTcwOCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2MCw3ICs1NjAsNyBAQCB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvCiAgICAgd2ViUGFnZS0+c2FuZGJv
eEV4dGVuc2lvblRyYWNrZXIoKS5kaWRDb21taXRQcm92aXNpb25hbExvYWQobV9mcmFtZSk7CiAK
ICAgICAvLyBOb3RpZnkgdGhlIFVJUHJvY2Vzcy4KLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRpZENvbW1pdExvYWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCks
IGRvY3VtZW50TG9hZGVyLm5hdmlnYXRpb25JRCgpLCBkb2N1bWVudExvYWRlci5yZXNwb25zZSgp
Lm1pbWVUeXBlKCksIG1fZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHN0YXRpY19jYXN0
PHVpbnQzMl90PihtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkubG9hZFR5cGUoKSksIHZh
bHVlT3JDb21wdXRlKGRvY3VtZW50TG9hZGVyLnJlc3BvbnNlKCkuY2VydGlmaWNhdGVJbmZvKCks
IFtdIHsgcmV0dXJuIENlcnRpZmljYXRlSW5mbygpOyB9KSwgbV9mcmFtZS0+Y29yZUZyYW1lKCkt
PmRvY3VtZW50KCktPmlzUGx1Z2luRG9jdW1lbnQoKSwgaGFzSW5zZWN1cmVDb250ZW50LCBVc2Vy
RGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVz
ZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKKyAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRpZENvbW1pdExvYWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIGRvY3Vt
ZW50TG9hZGVyLm5hdmlnYXRpb25JRCgpLCBkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLm1pbWVU
eXBlKCksIG1fZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHN0YXRpY19jYXN0PHVpbnQz
Ml90PihtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkubG9hZFR5cGUoKSksIHZhbHVlT3JD
b21wdXRlKGRvY3VtZW50TG9hZGVyLnJlc3BvbnNlKCkuY2VydGlmaWNhdGVJbmZvKCksIFtdIHsg
cmV0dXJuIENlcnRpZmljYXRlSW5mbygpOyB9KSwgZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKS51
c2VkTGVnYWN5VExTKCksIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLT5pc1BsdWdp
bkRvY3VtZW50KCksIGhhc0luc2VjdXJlQ29udGVudCwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkp
KSk7CiAgICAgd2ViUGFnZS0+ZGlkQ29tbWl0TG9hZChtX2ZyYW1lKTsKIH0KIApJbmRleDogVG9v
bHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjU1
NzA5KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAK
KzIwMjAtMDItMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
KworICAgICAgICBNYWtlIFdLV2ViVmlldy5fbmVnb3RpYXRlZExlZ2FjeVRMUyBhY2N1cmF0ZSB3
aGVuIGxvYWRpbmcgbWFpbiByZXNvdW9yY2UgZnJvbSBuZXR3b3JrIG9yIGNhY2hlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcyMDcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIVFRQU2VydmVyIG5vdyBz
dXBwb3J0cyBIVFRQUy4gVGVsbCB5b3VyIGZyaWVuZHMhCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0NoYWxsZW5nZS5tbToKKyAgICAgICAgKHRlc3RDZXJ0aWZp
Y2F0ZSk6CisgICAgICAgICh0ZXN0SWRlbnRpdHkpOgorICAgICAgICAoY3JlZGVudGlhbFdpdGhJ
ZGVudGl0eSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UTFNE
ZXByZWNhdGlvbi5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OndlYlZpZXdXaXRoTmF2aWdh
dGlvbkRlbGVnYXRlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5oOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvY29jb2EvSFRUUFNlcnZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2
ZXI6OkhUVFBTZXJ2ZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6cmVx
dWVzdCBjb25zdCk6CisKIDIwMjAtMDItMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggTWFjIENNYWtlIGJ1aWxkCkluZGV4OiBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NoYWxsZW5nZS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NoYWxsZW5nZS5tbQko
cmV2aXNpb24gMjU1NzA4KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9DaGFsbGVuZ2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2ltcG9y
dCAiY29uZmlnLmgiCiAKKyNpbXBvcnQgIkhUVFBTZXJ2ZXIuaCIKICNpbXBvcnQgIlBsYXRmb3Jt
VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUQ1BTZXJ2ZXIuaCIKICNpbXBvcnQgIlRlc3QuaCIKQEAg
LTQzLDExICs0NCwxNCBAQAogCiBzdGF0aWMgYm9vbCBuYXZpZ2F0aW9uRmluaXNoZWQ7CiAKLXN0
YXRpYyBSZXRhaW5QdHI8TlNVUkxDcmVkZW50aWFsPiBjcmVkZW50aWFsV2l0aElkZW50aXR5KCkK
K3N0YXRpYyBSZXRhaW5QdHI8U2VjQ2VydGlmaWNhdGVSZWY+IHRlc3RDZXJ0aWZpY2F0ZSgpCiB7
CiAgICAgYXV0byBjZXJ0aWZpY2F0ZUJ5dGVzID0gVGVzdFdlYktpdEFQSTo6VENQU2VydmVyOjp0
ZXN0Q2VydGlmaWNhdGUoKTsKLSAgICBhdXRvIGNlcnRpZmljYXRlID0gYWRvcHRDRihTZWNDZXJ0
aWZpY2F0ZUNyZWF0ZVdpdGhEYXRhKG51bGxwdHIsIChfX2JyaWRnZSBDRkRhdGFSZWYpW05TRGF0
YSBkYXRhV2l0aEJ5dGVzOmNlcnRpZmljYXRlQnl0ZXMuZGF0YSgpIGxlbmd0aDpjZXJ0aWZpY2F0
ZUJ5dGVzLnNpemUoKV0pKTsKLSAgICAKKyAgICByZXR1cm4gYWRvcHRDRihTZWNDZXJ0aWZpY2F0
ZUNyZWF0ZVdpdGhEYXRhKG51bGxwdHIsIChfX2JyaWRnZSBDRkRhdGFSZWYpW05TRGF0YSBkYXRh
V2l0aEJ5dGVzOmNlcnRpZmljYXRlQnl0ZXMuZGF0YSgpIGxlbmd0aDpjZXJ0aWZpY2F0ZUJ5dGVz
LnNpemUoKV0pKTsKK30KKworUmV0YWluUHRyPFNlY0lkZW50aXR5UmVmPiB0ZXN0SWRlbnRpdHko
KQorewogICAgIGF1dG8gcHJpdmF0ZUtleUJ5dGVzID0gVGVzdFdlYktpdEFQSTo6VENQU2VydmVy
Ojp0ZXN0UHJpdmF0ZUtleSgpOwogICAgIE5TRGF0YSAqZGVyRW5jb2RlZFByaXZhdGVLZXkgPSBb
TlNEYXRhIGRhdGFXaXRoQnl0ZXM6cHJpdmF0ZUtleUJ5dGVzLmRhdGEoKSBsZW5ndGg6cHJpdmF0
ZUtleUJ5dGVzLnNpemUoKV07CiAgICAgTlNEaWN0aW9uYXJ5KiBvcHRpb25zID0gQHsKQEAgLTYx
LDEwICs2NSwxNSBAQCBzdGF0aWMgUmV0YWluUHRyPE5TVVJMQ3JlZGVudGlhbD4gY3JlZGVuCiAg
ICAgRVhQRUNUX05VTEwoZXJyb3IpOwogICAgIEVYUEVDVF9OT1RfTlVMTChwcml2YXRlS2V5Lmdl
dCgpKTsKIAotICAgIGF1dG8gaWRlbnRpdHkgPSBhZG9wdENGKFNlY0lkZW50aXR5Q3JlYXRlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIGNlcnRpZmljYXRlLmdldCgpLCBwcml2YXRlS2V5LmdldCgpKSk7
CisgICAgcmV0dXJuIGFkb3B0Q0YoU2VjSWRlbnRpdHlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgdGVzdENlcnRpZmljYXRlKCkuZ2V0KCksIHByaXZhdGVLZXkuZ2V0KCkpKTsKK30KKworc3Rh
dGljIFJldGFpblB0cjxOU1VSTENyZWRlbnRpYWw+IGNyZWRlbnRpYWxXaXRoSWRlbnRpdHkoKQor
eworICAgIGF1dG8gaWRlbnRpdHkgPSB0ZXN0SWRlbnRpdHkoKTsKICAgICBFWFBFQ1RfTk9UX05V
TEwoaWRlbnRpdHkpOwogICAgIAotICAgIHJldHVybiBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRp
YWxXaXRoSWRlbnRpdHk6aWRlbnRpdHkuZ2V0KCkgY2VydGlmaWNhdGVzOkBbKGlkKWNlcnRpZmlj
YXRlLmdldCgpXSBwZXJzaXN0ZW5jZTpOU1VSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmVdOwor
ICAgIHJldHVybiBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxXaXRoSWRlbnRpdHk6aWRlbnRp
dHkuZ2V0KCkgY2VydGlmaWNhdGVzOkBbKGlkKXRlc3RDZXJ0aWZpY2F0ZSgpLmdldCgpXSBwZXJz
aXN0ZW5jZTpOU1VSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmVdOwogfQogCiBAaW50ZXJmYWNl
IENoYWxsZW5nZURlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgpJbmRl
eDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UTFNEZXByZWNhdGlvbi5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RM
U0RlcHJlY2F0aW9uLm1tCShyZXZpc2lvbiAyNTU3MDgpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1RMU0RlcHJlY2F0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
Nyw2ICsyNyw3IEBACiAKICNpZiBIQVZFKFNTTCkKIAorI2ltcG9ydCAiSFRUUFNlcnZlci5oIgog
I2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRDUFNlcnZlci5oIgogI2lt
cG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgpAQCAtMzcsMTMgKzM4LDE0IEBACiAjaW1w
b3J0IDxXZWJLaXQvV2ViS2l0Lmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0
Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICNpbXBvcnQgPFdlYktpdC9XZWJVSUtpdFN1cHBvcnQuaD4KICNpbXBvcnQgPFdlYktp
dC9XZWJDb3JlVGhyZWFkLmg+CiAjZW5kaWYKIAotI2lmIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJ
T05fVCkKKyNpZiBIQVZFKFRMU19QUk9UT0NPTF9WRVJTSU9OX1QpIHx8IEhBVkUoTkVUV09SS19G
UkFNRVdPUkspCiBAaW50ZXJmYWNlIFRMU09ic2VydmVyIDogTlNPYmplY3QKIC0gKHZvaWQpd2Fp
dFVudGlsTmVnb3RpYXRlZExlZ2FjeVRMU0NoYW5nZWQ7CiBAZW5kCkBAIC0yMjgsMTMgKzIzMCw5
IEBAIFRFU1QoVExTVmVyc2lvbiwgRElTQUJMRURfTmF2aWdhdGlvbkRlbGUKIH0KIAogI2lmIEhB
VkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkKLVRFU1QoVExTVmVyc2lvbiwgTmVnb3RpYXRlZExl
Z2FjeVRMUykKLXsKLSAgICBUQ1BTZXJ2ZXIgc2VydmVyKFRDUFNlcnZlcjo6UHJvdG9jb2w6OkhU
VFBTLCBbXSAoU1NMICpzc2wpIHsKLSAgICAgICAgVENQU2VydmVyOjpyZXNwb25kV2l0aE9LKHNz
bCk7Ci0gICAgICAgIFRDUFNlcnZlcjo6cmVzcG9uZFdpdGhPSyhzc2wpOwotICAgIH0sIHRsczFf
MSk7CiAKK3N0YXRpYyBzdGQ6OnBhaXI8UmV0YWluUHRyPFdLV2ViVmlldz4sIFJldGFpblB0cjxU
ZXN0TmF2aWdhdGlvbkRlbGVnYXRlPj4gd2ViVmlld1dpdGhOYXZpZ2F0aW9uRGVsZWdhdGUoKQor
ewogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5l
d10pOwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKICAgICBb
d2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwpAQCAtMjQyLDYg
KzI0MCwyMCBAQCBURVNUKFRMU1ZlcnNpb24sIE5lZ290aWF0ZWRMZWdhY3lUTFMpCiAgICAgICAg
IEVYUEVDVF9XS19TVFJFUShjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9u
TWV0aG9kLCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmVyVHJ1c3QpOwogICAgICAgICBj
YWxsYmFjayhOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgW05TVVJMQ3Jl
ZGVudGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2
ZXJUcnVzdF0pOwogICAgIH1dOworICAgIHJldHVybiB7IHdlYlZpZXcsIGRlbGVnYXRlIH07Cit9
CisKKyNlbmRpZiAvLyBIQVZFKFRMU19QUk9UT0NPTF9WRVJTSU9OX1QpIHx8IEhBVkUoTkVUV09S
S19GUkFNRVdPUkspCisKKyNpZiBIQVZFKFRMU19QUk9UT0NPTF9WRVJTSU9OX1QpCisKK1RFU1Qo
VExTVmVyc2lvbiwgTmVnb3RpYXRlZExlZ2FjeVRMUykKK3sKKyAgICBIVFRQU2VydmVyIHNlcnZl
cih7CisgICAgICAgIHsgIi8iLCB7ICJoZWxsbyIgfSB9CisgICAgfSwgSFRUUFNlcnZlcjo6UHJv
dG9jb2w6Okh0dHBzV2l0aExlZ2FjeVRMUyk7CisKKyAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0
ZV0gPSB3ZWJWaWV3V2l0aE5hdmlnYXRpb25EZWxlZ2F0ZSgpOwogICAgIE5TVVJMUmVxdWVzdCAq
cmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJp
bmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwczovLzEyNy4wLjAuMTolZC8iLCBz
ZXJ2ZXIucG9ydCgpXV1dOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwogCkBA
IC0yNjIsNyArMjc0LDY0IEBAIFRFU1QoVExTVmVyc2lvbiwgTmVnb3RpYXRlZExlZ2FjeVRMUykK
IAogICAgIFt3ZWJWaWV3IHJlbW92ZU9ic2VydmVyOm9ic2VydmVyLmdldCgpIGZvcktleVBhdGg6
QCJfbmVnb3RpYXRlZExlZ2FjeVRMUyJdOwogfQotI2VuZGlmCisKKyNlbmRpZiAvLyBIQVZFKFRM
U19QUk9UT0NPTF9WRVJTSU9OX1QpCisKKyNpZiBIQVZFKE5FVFdPUktfRlJBTUVXT1JLKSAmJiBI
QVZFKFRMU19QUk9UT0NPTF9WRVJTSU9OX1QpCisKK1RFU1QoVExTVmVyc2lvbiwgTmF2aWdhdGVC
YWNrKQoreworICAgIEhUVFBTZXJ2ZXIgbGVnYWN5VExTU2VydmVyKHsKKyAgICAgICAgeyAiLyIs
IHsgImhlbGxvIiB9IH0KKyAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHNXaXRoTGVn
YWN5VExTKTsKKworICAgIEhUVFBTZXJ2ZXIgbW9kZXJuVExTU2VydmVyKHsKKyAgICAgICAgeyAi
LyIsIHsgImhlbGxvIiB9IH0KKyAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwor
ICAgIAorICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHdlYlZpZXdXaXRoTmF2aWdhdGlv
bkRlbGVnYXRlKCk7CisgICAgYXV0byBvYnNlcnZlciA9IGFkb3B0TlMoW1RMU09ic2VydmVyIG5l
d10pOworICAgIFt3ZWJWaWV3IGFkZE9ic2VydmVyOm9ic2VydmVyLmdldCgpIGZvcktleVBhdGg6
QCJfbmVnb3RpYXRlZExlZ2FjeVRMUyIgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9u
TmV3IGNvbnRleHQ6bmlsXTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OmxlZ2FjeVRMU1Nl
cnZlci5yZXF1ZXN0KCldOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBfbmVnb3RpYXRlZExl
Z2FjeVRMU10pOworICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07Cisg
ICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgX25lZ290aWF0ZWRMZWdhY3lUTFNdKTsKKworICAgIFt3
ZWJWaWV3IGxvYWRSZXF1ZXN0Om1vZGVyblRMU1NlcnZlci5yZXF1ZXN0KCldOworICAgIFtkZWxl
Z2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJW
aWV3IF9uZWdvdGlhdGVkTGVnYWN5VExTXSk7CisKKyAgICBbd2ViVmlldyBnb0JhY2tdOworICAg
IFtvYnNlcnZlciB3YWl0VW50aWxOZWdvdGlhdGVkTGVnYWN5VExTQ2hhbmdlZF07CisgICAgRVhQ
RUNUX1RSVUUoW3dlYlZpZXcgX25lZ290aWF0ZWRMZWdhY3lUTFNdKTsKKworICAgIFt3ZWJWaWV3
IHJlbW92ZU9ic2VydmVyOm9ic2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJfbmVnb3RpYXRlZExl
Z2FjeVRMUyJdOworfQorCitURVNUKFRMU1ZlcnNpb24sIFN1YnJlc291cmNlKQoreworICAgIEhU
VFBTZXJ2ZXIgbGVnYWN5VExTU2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsgImhlbGxvIiB9IH0K
KyAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHNXaXRoTGVnYWN5VExTKTsKKworICAg
IEhUVFBTZXJ2ZXIgbW9kZXJuVExTU2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsgbWFrZVN0cmlu
ZygiPHNjcmlwdD5mZXRjaCgnaHR0cHM6Ly8xMjcuMC4wLjE6Iiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGxlZ2FjeVRMU1NlcnZlci5wb3J0KCkpLCAiLycse21vZGU6J25vLWNvcnMnfSk8L3Njcmlw
dD4iKSB9IH0KKyAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOworICAgIAorICAg
IGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHdlYlZpZXdXaXRoTmF2aWdhdGlvbkRlbGVnYXRl
KCk7CisgICAgYXV0byBvYnNlcnZlciA9IGFkb3B0TlMoW1RMU09ic2VydmVyIG5ld10pOworICAg
IFt3ZWJWaWV3IGFkZE9ic2VydmVyOm9ic2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJfbmVnb3Rp
YXRlZExlZ2FjeVRMUyIgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRl
eHQ6bmlsXTsKKworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBfbmVnb3RpYXRlZExlZ2FjeVRM
U10pOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0Om1vZGVyblRMU1NlcnZlci5yZXF1ZXN0KCld
OworICAgIHdoaWxlICghW3dlYlZpZXcgX25lZ290aWF0ZWRMZWdhY3lUTFNdKQorICAgICAgICBb
b2JzZXJ2ZXIgd2FpdFVudGlsTmVnb3RpYXRlZExlZ2FjeVRMU0NoYW5nZWRdOworCisgICAgW3dl
YlZpZXcgcmVtb3ZlT2JzZXJ2ZXI6b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAIl9uZWdvdGlh
dGVkTGVnYWN5VExTIl07Cit9CisKKyNlbmRpZiAvLyBIQVZFKE5FVFdPUktfRlJBTUVXT1JLKSAm
JiBIQVZFKFRMU19QUk9UT0NPTF9WRVJTSU9OX1QpCiAKIC8vIEZJWE1FOiBBZGQgc29tZSB0ZXN0
cyBmb3IgV0tXZWJWaWV3Lmhhc09ubHlTZWN1cmVDb250ZW50CiAKSW5kZXg6IFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvY29jb2EvSFRUUFNlcnZlci5oCShyZXZpc2lvbiAyNTU3MDgpCisrKyBUb29scy9UZXN0
V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgs
OCBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiBjbGFzcyBIVFRQU2VydmVyIHsKIHB1Ymxp
YzoKICAgICBzdHJ1Y3QgSFRUUFJlc3BvbnNlOwotICAgIEhUVFBTZXJ2ZXIoc3RkOjppbml0aWFs
aXplcl9saXN0PHN0ZDo6cGFpcjxTdHJpbmcsIEhUVFBSZXNwb25zZT4+KTsKKyAgICBlbnVtIGNs
YXNzIFByb3RvY29sIDogdWludDhfdCB7IEh0dHAsIEh0dHBzLCBIdHRwc1dpdGhMZWdhY3lUTFMg
fTsKKyAgICBIVFRQU2VydmVyKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8U3RyaW5n
LCBIVFRQUmVzcG9uc2U+PiwgUHJvdG9jb2wgPSBQcm90b2NvbDo6SHR0cCk7CiAgICAgdWludDE2
X3QgcG9ydCgpIGNvbnN0OwogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCgpIGNvbnN0OwogICAg
IApAQCAtNDYsNiArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVzcG9uZFRvUmVxdWVzdHMo
bndfY29ubmVjdGlvbl90KTsKICAgICAKICAgICBSZXRhaW5QdHI8bndfbGlzdGVuZXJfdD4gbV9s
aXN0ZW5lcjsKKyAgICBjb25zdCBQcm90b2NvbCBtX3Byb3RvY29sOwogICAgIGNvbnN0IEhhc2hN
YXA8U3RyaW5nLCBIVFRQUmVzcG9uc2U+IG1fcmVxdWVzdFJlc3BvbnNlTWFwOwogfTsKIApAQCAt
NzQsMyArNzYsNSBAQCBzdHJ1Y3QgSFRUUFNlcnZlcjo6SFRUUFJlc3BvbnNlIHsKIH0gLy8gbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkKIAogI2VuZGlmIC8vIEhBVkUoTkVUV09SS19GUkFNRVdPUksp
CisKK1JldGFpblB0cjxTZWNJZGVudGl0eVJlZj4gdGVzdElkZW50aXR5KCk7CkluZGV4OiBUb29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCShyZXZpc2lvbiAyNTU3MDgpCisrKyBU
b29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0JKHdvcmtpbmcgY29weSkKQEAg
LTMzLDE1ICszMywyOCBAQAogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLUhUVFBTZXJ2
ZXI6OkhUVFBTZXJ2ZXIoc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxTdHJpbmcsIEhU
VFBSZXNwb25zZT4+IHJlc3BvbnNlcykKLSAgICA6IG1fcmVxdWVzdFJlc3BvbnNlTWFwKFtdKHN0
ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8U3RyaW5nLCBIVFRQU2VydmVyOjpIVFRQUmVz
cG9uc2U+PiBsaXN0KSB7CitIVFRQU2VydmVyOjpIVFRQU2VydmVyKHN0ZDo6aW5pdGlhbGl6ZXJf
bGlzdDxzdGQ6OnBhaXI8U3RyaW5nLCBIVFRQUmVzcG9uc2U+PiByZXNwb25zZXMsIFByb3RvY29s
IHByb3RvY29sKQorICAgIDogbV9wcm90b2NvbChwcm90b2NvbCkKKyAgICAsIG1fcmVxdWVzdFJl
c3BvbnNlTWFwKFtdKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8U3RyaW5nLCBIVFRQ
U2VydmVyOjpIVFRQUmVzcG9uc2U+PiBsaXN0KSB7CiAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBI
VFRQU2VydmVyOjpIVFRQUmVzcG9uc2U+IG1hcDsKICAgICAgICAgZm9yIChhdXRvJiBwYWlyIDog
bGlzdCkKICAgICAgICAgICAgIG1hcC5hZGQocGFpci5maXJzdCwgcGFpci5zZWNvbmQpOwogICAg
ICAgICByZXR1cm4gbWFwOwogICAgIH0ocmVzcG9uc2VzKSkKIHsKLSAgICBhdXRvIHBhcmFtZXRl
cnMgPSBhZG9wdE5TKG53X3BhcmFtZXRlcnNfY3JlYXRlX3NlY3VyZV90Y3AoTldfUEFSQU1FVEVS
U19ESVNBQkxFX1BST1RPQ09MLCBOV19QQVJBTUVURVJTX0RFRkFVTFRfQ09ORklHVVJBVElPTikp
OworICAgIGF1dG8gY29uZmlndXJlVExTID0gcHJvdG9jb2wgPT0gUHJvdG9jb2w6Okh0dHAgPyBO
V19QQVJBTUVURVJTX0RJU0FCTEVfUFJPVE9DT0wgOiBeKG53X3Byb3RvY29sX29wdGlvbnNfdCBw
cm90b2NvbE9wdGlvbnMpIHsKKyNpZiBIQVZFKFRMU19QUk9UT0NPTF9WRVJTSU9OX1QpCisgICAg
ICAgIGF1dG8gb3B0aW9ucyA9IGFkb3B0TlMobndfdGxzX2NvcHlfc2VjX3Byb3RvY29sX29wdGlv
bnMocHJvdG9jb2xPcHRpb25zKSk7CisgICAgICAgIGF1dG8gaWRlbnRpdHkgPSBhZG9wdE5TKHNl
Y19pZGVudGl0eV9jcmVhdGUodGVzdElkZW50aXR5KCkuZ2V0KCkpKTsKKyAgICAgICAgc2VjX3By
b3RvY29sX29wdGlvbnNfc2V0X2xvY2FsX2lkZW50aXR5KG9wdGlvbnMuZ2V0KCksIGlkZW50aXR5
LmdldCgpKTsKKyAgICAgICAgaWYgKHByb3RvY29sID09IFByb3RvY29sOjpIdHRwc1dpdGhMZWdh
Y3lUTFMpCisgICAgICAgICAgICBzZWNfcHJvdG9jb2xfb3B0aW9uc19zZXRfbWF4X3Rsc19wcm90
b2NvbF92ZXJzaW9uKG9wdGlvbnMuZ2V0KCksIHRsc19wcm90b2NvbF92ZXJzaW9uX1RMU3YxMCk7
CisjZWxzZQorICAgICAgICBVTlVTRURfUEFSQU0ocHJvdG9jb2xPcHRpb25zKTsKKyAgICAgICAg
QVNTRVJUKHByb3RvY29sICE9IFByb3RvY29sOjpIdHRwc1dpdGhMZWdhY3lUTFMpOworI2VuZGlm
CisgICAgfTsKKyAgICBhdXRvIHBhcmFtZXRlcnMgPSBhZG9wdE5TKG53X3BhcmFtZXRlcnNfY3Jl
YXRlX3NlY3VyZV90Y3AoY29uZmlndXJlVExTLCBOV19QQVJBTUVURVJTX0RFRkFVTFRfQ09ORklH
VVJBVElPTikpOwogICAgIG1fbGlzdGVuZXIgPSBhZG9wdE5TKG53X2xpc3RlbmVyX2NyZWF0ZShw
YXJhbWV0ZXJzLmdldCgpKSk7CiAgICAgbndfbGlzdGVuZXJfc2V0X3F1ZXVlKG1fbGlzdGVuZXIu
Z2V0KCksIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOwogICAgIG53X2xpc3RlbmVyX3NldF9u
ZXdfY29ubmVjdGlvbl9oYW5kbGVyKG1fbGlzdGVuZXIuZ2V0KCksIF4obndfY29ubmVjdGlvbl90
IGNvbm5lY3Rpb24pIHsKQEAgLTEyNyw3ICsxNDAsMTcgQEAgdWludDE2X3QgSFRUUFNlcnZlcjo6
cG9ydCgpIGNvbnN0CiAKIE5TVVJMUmVxdWVzdCAqSFRUUFNlcnZlcjo6cmVxdWVzdCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdp
dGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwOi8vMTI3LjAuMC4xOiVk
LyIsIHBvcnQoKV1dXTsKKyAgICBOU1N0cmluZyAqZm9ybWF0OworICAgIHN3aXRjaCAobV9wcm90
b2NvbCkgeworICAgIGNhc2UgUHJvdG9jb2w6Okh0dHA6CisgICAgICAgIGZvcm1hdCA9IEAiaHR0
cDovLzEyNy4wLjAuMTolZC8iOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFByb3RvY29sOjpI
dHRwczoKKyAgICBjYXNlIFByb3RvY29sOjpIdHRwc1dpdGhMZWdhY3lUTFM6CisgICAgICAgIGZv
cm1hdCA9IEAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIjsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIHJldHVybiBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OmZvcm1hdCwgcG9ydCgpXV1dOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389750</attachid>
            <date>2020-02-04 17:21:27 -0800</date>
            <delta_ts>2020-02-04 18:00:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207207-20200204172125.patch</filename>
            <type>text/plain</type>
            <size>58135</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNTU3NzcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDIwLTAyLTA0ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBXS1dlYlZpZXcuX25lZ290
aWF0ZWRMZWdhY3lUTFMgYWNjdXJhdGUgd2hlbiBsb2FkaW5nIG1haW4gcmVzb3VvcmNlIGZyb20g
bmV0d29yayBvciBjYWNoZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA3MjA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiB3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuY3BwOgorICAgICAg
ICAoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAgKiB3dGYvcGVy
c2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaDoKKyAgICAgICAgKiB3dGYvcGVyc2lzdGVuY2Uv
UGVyc2lzdGVudEVuY29kZXIuY3BwOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rl
cjo6ZW5jb2RlKToKKyAgICAgICAgKiB3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIu
aDoKKwogMjAyMC0wMi0wNCAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIE5vbi11bmlmaWVkIGJ1aWxkIGZpeGVzIGVhcmx5IEZlYnJ1YXJ5IDIw
MjAgZWRpdGlvbgpJbmRleDogU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERl
Y29kZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNp
c3RlbnREZWNvZGVyLmNwcAkocmV2aXNpb24gMjU1Nzc3KQorKysgU291cmNlL1dURi93dGYvcGVy
c2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw2ICs4
NywxMSBAQCBib29sIERlY29kZXI6OmRlY29kZSh1aW50MTZfdCYgcmVzdWx0KQogICAgIHJldHVy
biBkZWNvZGVOdW1iZXIocmVzdWx0KTsKIH0KIAorYm9vbCBEZWNvZGVyOjpkZWNvZGUoaW50MTZf
dCYgcmVzdWx0KQoreworICAgIHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0KTsKK30KKwogYm9v
bCBEZWNvZGVyOjpkZWNvZGUodWludDMyX3QmIHJlc3VsdCkKIHsKICAgICByZXR1cm4gZGVjb2Rl
TnVtYmVyKHJlc3VsdCk7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0
ZW50RGVjb2Rlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1Bl
cnNpc3RlbnREZWNvZGVyLmgJKHJldmlzaW9uIDI1NTc3NykKKysrIFNvdXJjZS9XVEYvd3RmL3Bl
cnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUw
LDcgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGRlY29kZSh1aW50MTZf
dCYpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGRlY29kZSh1aW50MzJfdCYpOwogICAg
IFdURl9FWFBPUlRfUFJJVkFURSBib29sIGRlY29kZSh1aW50NjRfdCYpOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSBib29sIGRlY29kZShpbnQxNl90Jik7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IGJvb2wgZGVjb2RlKGludDMyX3QmKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBkZWNv
ZGUoaW50NjRfdCYpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGRlY29kZShmbG9hdCYp
OwpJbmRleDogU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNv
ZGVyLmNwcAkocmV2aXNpb24gMjU1Nzc3KQorKysgU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2Uv
UGVyc2lzdGVudEVuY29kZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw2ICs4NSwxMSBAQCB2
b2lkIEVuY29kZXI6OmVuY29kZSh1aW50MTZfdCB2YWx1ZSkKICAgICBlbmNvZGVOdW1iZXIodmFs
dWUpOwogfQogCit2b2lkIEVuY29kZXI6OmVuY29kZShpbnQxNl90IHZhbHVlKQoreworICAgIGVu
Y29kZU51bWJlcih2YWx1ZSk7Cit9CisKIHZvaWQgRW5jb2Rlcjo6ZW5jb2RlKHVpbnQzMl90IHZh
bHVlKQogewogICAgIGVuY29kZU51bWJlcih2YWx1ZSk7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9w
ZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmgJKHJldmlzaW9uIDI1NTc3NykKKysr
IFNvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTg1LDYgKzg1LDcgQEAgcHJpdmF0ZToKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
dm9pZCBlbmNvZGUodWludDE2X3QpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGVuY29k
ZSh1aW50MzJfdCk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZW5jb2RlKHVpbnQ2NF90
KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBlbmNvZGUoaW50MTZfdCk7CiAgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHZvaWQgZW5jb2RlKGludDMyX3QpOwogICAgIFdURl9FWFBPUlRfUFJJ
VkFURSB2b2lkIGVuY29kZShpbnQ2NF90KTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBl
bmNvZGUoZmxvYXQpOwpAQCAtMTEwLDYgKzExMSw3IEBAIHRlbXBsYXRlIDw+IHN0cnVjdCBFbmNv
ZGVyOjpTYWx0PGludDY0X3QKIHRlbXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PGZsb2F0
PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAyMzsgfTsKIHRlbXBsYXRlIDw+
IHN0cnVjdCBFbmNvZGVyOjpTYWx0PGRvdWJsZT4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IHZhbHVlID0gMjk7IH07CiB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDx1aW50OF90
Kj4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMTAxOyB9OwordGVtcGxhdGUg
PD4gc3RydWN0IEVuY29kZXI6OlNhbHQ8aW50MTZfdD4geyBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIHZhbHVlID0gMTAzOyB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZT4KIHZvaWQgRW5j
b2Rlcjo6dXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIoU0hBMSYgc2hhMSwgVHlwZSB2YWx1ZSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NTc3NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDIwLTAyLTA0ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBXS1dlYlZp
ZXcuX25lZ290aWF0ZWRMZWdhY3lUTFMgYWNjdXJhdGUgd2hlbiBsb2FkaW5nIG1haW4gcmVzb3Vv
cmNlIGZyb20gbmV0d29yayBvciBjYWNoZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA3MjA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjppbmNsdWRlQ2Vy
dGlmaWNhdGVJbmZvIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVzcG9uc2VCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6
dXNlZExlZ2FjeVRMUyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
QmFzZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VC
YXNlOjpkZWNvZGUpOgorCiAyMDIwLTAyLTA0ICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8YXBl
cmV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgTm9uLXVuaWZpZWQgYnVpbGQgZml4ZXMgZWFybHkg
RmVicnVhcnkgMjAyMCBlZGl0aW9uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAkocmV2aXNpb24gMjU1
Nzc3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNl
QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MSwxMSArMjYxLDEyIEBAIHZvaWQgUmVzb3Vy
Y2VSZXNwb25zZUJhc2U6OnNldFR5cGUoVHlwZSAKICAgICBtX3R5cGUgPSB0eXBlOwogfQogCi12
b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjppbmNsdWRlQ2VydGlmaWNhdGVJbmZvKCkgY29uc3QK
K3ZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8oVXNlZExl
Z2FjeVRMUyB1c2VkTGVnYWN5VExTKSBjb25zdAogewogICAgIGlmIChtX2NlcnRpZmljYXRlSW5m
bykKICAgICAgICAgcmV0dXJuOwogICAgIG1fY2VydGlmaWNhdGVJbmZvID0gc3RhdGljX2Nhc3Q8
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSo+KHRoaXMpLT5wbGF0Zm9ybUNlcnRpZmljYXRlSW5mbygp
OworICAgIG1fdXNlZExlZ2FjeVRMUyA9IHVzZWRMZWdhY3lUTFM7CiB9CiAKIFN0cmluZyBSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6c3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJh
c2UuaAkocmV2aXNpb24gMjU1Nzc3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw4IEBA
IGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiAKIGJvb2wgaXNTY3JpcHRBbGxvd2VkQnlOb3NuaWZm
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIAorZW51bSBjbGFzcyBVc2VkTGVnYWN5VExTIDog
Ym9vbCB7IE5vLCBZZXMgfTsKKwogLy8gRG8gbm90IHVzZSB0aGlzIGNsYXNzIGRpcmVjdGx5LCB1
c2UgdGhlIGNsYXNzIFJlc291cmNlUmVzcG9uc2UgaW5zdGVhZAogY2xhc3MgUmVzb3VyY2VSZXNw
b25zZUJhc2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMTI3LDggKzEyOSw5
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUo
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIHNhbml0aXplU3VnZ2Vz
dGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGlu
Y2x1ZGVDZXJ0aWZpY2F0ZUluZm8oKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGlu
Y2x1ZGVDZXJ0aWZpY2F0ZUluZm8oVXNlZExlZ2FjeVRMUyA9IFVzZWRMZWdhY3lUTFM6Ok5vKSBj
b25zdDsKICAgICBjb25zdCBPcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+JiBjZXJ0aWZpY2F0ZUlu
Zm8oKSBjb25zdCB7IHJldHVybiBtX2NlcnRpZmljYXRlSW5mbzsgfTsKKyAgICBib29sIHVzZWRM
ZWdhY3lUTFMoKSBjb25zdCB7IHJldHVybiBtX3VzZWRMZWdhY3lUTFMgPT0gVXNlZExlZ2FjeVRM
Uzo6WWVzOyB9CiAgICAgCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIHJldHVybiBwYXJzZWQgdmFs
dWVzIG9mIHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlIGhlYWRlcnMuCiAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBjYWNoZUNvbnRyb2xDb250YWluc05vQ2FjaGUoKSBjb25zdDsKQEAgLTI0Niw3
ICsyNDksOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1JhbmdlUmVxdWVzdGVkIHsgZmFsc2Ug
fTsKIAogcHJvdGVjdGVkOgotICAgIGludCBtX2h0dHBTdGF0dXNDb2RlIHsgMCB9OworICAgIHNo
b3J0IG1faHR0cFN0YXR1c0NvZGUgeyAwIH07CisgICAgbXV0YWJsZSBVc2VkTGVnYWN5VExTIG1f
dXNlZExlZ2FjeVRMUyB7IFVzZWRMZWdhY3lUTFM6Ok5vIH07CiB9OwogCiBpbmxpbmUgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGEsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIGIpIHsgcmV0dXJuIFJlc291cmNlUmVzcG9uc2VCYXNlOjpjb21wYXJlKGEsIGIpOyB9CkBA
IC0yNzksNiArMjgzLDcgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZW5jb2RlKEVuY29k
ZQogICAgIGVuY29kZXIuZW5jb2RlRW51bShtX3R5cGUpOwogICAgIGVuY29kZXIuZW5jb2RlRW51
bShtX3RhaW50aW5nKTsKICAgICBlbmNvZGVyIDw8IG1faXNSZWRpcmVjdGVkOworICAgIGVuY29k
ZXIgPDwgbV91c2VkTGVnYWN5VExTOwogICAgIGVuY29kZXIgPDwgbV9pc1JhbmdlUmVxdWVzdGVk
OwogfQogCkBAIC0zMjgsNiArMzMzLDEyIEBAIGJvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmRl
Y29kZShEZWNvZGUKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJlc3BvbnNlLm1faXNSZWRp
cmVjdGVkID0gaXNSZWRpcmVjdGVkOwogCisgICAgT3B0aW9uYWw8VXNlZExlZ2FjeVRMUz4gdXNl
ZExlZ2FjeVRMUzsKKyAgICBkZWNvZGVyID4+IHVzZWRMZWdhY3lUTFM7CisgICAgaWYgKCF1c2Vk
TGVnYWN5VExTKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmVzcG9uc2UubV91c2VkTGVn
YWN5VExTID0gKnVzZWRMZWdhY3lUTFM7CisKICAgICBib29sIGlzUmFuZ2VSZXF1ZXN0ZWQgPSBm
YWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzUmFuZ2VSZXF1ZXN0ZWQpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjU1Nzc3KQorKysgU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw2OSBAQAorMjAyMC0w
Mi0wNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAg
ICAgIE1ha2UgV0tXZWJWaWV3Ll9uZWdvdGlhdGVkTGVnYWN5VExTIGFjY3VyYXRlIHdoZW4gbG9h
ZGluZyBtYWluIHJlc291b3JjZSBmcm9tIG5ldHdvcmsgb3IgY2FjaGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzIwNworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIFBhZ2VMb2FkU3RhdGU6OmRpZENv
bW1pdExvYWQsIEkgd2FzIHJlc2V0dGluZyB0aGUgdmFsdWUgb2YgX25lZ290aWF0ZWRMZWdhY3lU
TFMgdG8gZmFsc2UuCisgICAgICAgIFRoYXQgY3JlYXRlZCBhIHJhY2UgY29uZGl0aW9uIHdoZW4g
bG9hZGluZyB0aGUgbWFpbiByZXNvdXJjZSBiZWNhdXNlIHRoZSBOZXR3b3JrUHJvY2VzcyB3b3Vs
ZAorICAgICAgICBtZXNzYWdlIHRoZSBVSVByb2Nlc3Mgc2V0dGluZyBfbmVnb3RpYXRlZExlZ2Fj
eVRMUyB0byBmYWxzZSwgd2hpbGUgdGhlIE5ldHdvcmtQcm9jZXNzIHdvdWxkCisgICAgICAgIG1l
c3NhZ2UgdGhlIFdlYlByb2Nlc3Mgd2hpY2ggd291bGQgbWVzc2FnZSB0aGUgVUlQcm9jZXNzIHRv
IGNhbGwgUGFnZUxvYWRTdGF0ZTo6ZGlkQ29tbWl0TG9hZAorICAgICAgICB3aGljaCB3b3VsZCBy
ZXNldCBpdCB0byBmYWxzZS4gIE5vdyBpdCByZXNldHMgaXQgdG8gdGhlIGNvcnJlY3QgdmFsdWUs
IHdoYXRldmVyIGl0IGlzLgorCisgICAgICAgIFVwZGF0aW5nIHRoZSBSZXNvdXJjZVJlc3BvbnNl
QmFzZSBzZXJpYWxpemF0aW9uIGNvZGUgaGFzIHRoZSBkZXNpcmFibGUgc2lkZSBlZmZlY3QgdGhh
dCB0aGUgZGlzaworICAgICAgICBjYWNoZSB3aWxsIHJlbWVtYmVyIHdoZXRoZXIgbGVnYWN5IFRM
UyB3YXMgdXNlZCB0byBmZXRjaCBlYWNoIHJlc291cmNlLiAgVGhpcyB3aWxsIG1ha2UgaXQgc28K
KyAgICAgICAgX25lZ290aWF0ZWRMZWdhY3lUTFMgaXMgdHJ1ZSBpZiB3ZSByZWFkIGNvbnRlbnQg
ZnJvbSB0aGUgZGlzayBjYWNoZSB0aGF0IHdhcyBvcmlnaW5hbGx5IGZldGNoZWQKKyAgICAgICAg
dXNpbmcgbGVnYWN5IFRMUy4KKworICAgICAgICBJbiBvcmRlciB0byBub3QgaW5jcmVhc2UgdGhl
IG1lbW9yeSBmb290cHJpbnQgb2YgUmVzb3VyY2VSZXNwb25zZSwgSSBjaGFuZ2VkIG1faHR0cFN0
YXR1c0NvZGUgZnJvbQorICAgICAgICBhbiBpbnQgdG8gYSBzaG9ydC4gIEl0IGp1c3QgbmVlZHMg
dG8gYmUgYWJsZSB0byBjb3ZlciB0aGUgdmFsdWVzIDAtNjAwIG9yIHNvLCB3aGljaCByZWFsbHkg
b25seSBuZWVkcyAxMCBiaXRzLgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IEFQSSB0ZXN0cy4K
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZs
aWdodENoZWNrZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2su
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVSZXNwb25z
ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFzazo6bmVnb3RpYXRlZExlZ2FjeVRM
UyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFU
YXNrLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NsaWVudDo6bmVnb3RpYXRl
ZExlZ2FjeVRMUyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0RhdGFUYXNrQmxvYi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0Js
b2I6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRSZWNl
aXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6bm90aWZ5RGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OnRocm90dGxlRGVs
YXlDb21wbGV0ZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6bmVnb3RpYXRlZExl
Z2FjeVRMUyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlBpbmdMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1BpbmdMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0
YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6OmRp
ZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKC1bV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIFVS
TFNlc3Npb246ZGF0YVRhc2s6ZGlkUmVjZWl2ZVJlc3BvbnNlOmNvbXBsZXRpb25IYW5kbGVyOl0p
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0N1cmw6Omludm9rZURpZFJlY2VpdmVS
ZXNwb25zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tT
b3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6ZGlzcGF0Y2hE
aWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUxvYWRTdGF0ZTo6ZGlkQ29tbWl0TG9hZCk6CisgICAg
ICAgICogVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJv
dmlzaW9uYWxQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQ
cm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlz
aW9uYWxQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNpb25hbFBhZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1pdExvYWQpOgorCiAyMDIwLTAyLTA0ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIG1hY0NhdGFseXN0
OiBTaG91bGRuJ3QgZ2V0IHRleHQgY3Vyc29yIG9uIGNoZWNrYm94ZXMKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlci5jcHAJKHJldmlzaW9uIDI1NTc3NykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRS
ZWMKICAgICBtX25ldHdvcmtQcm9jZXNzLT5hdXRoZW50aWNhdGlvbk1hbmFnZXIoKS5kaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UobV9wYXJhbWV0ZXJzLnNlc3Npb25JRCwgbV9wYXJh
bWV0ZXJzLndlYlBhZ2VQcm94eUlELCBtX3BhcmFtZXRlcnMudG9wT3JpZ2luID8gJm1fcGFyYW1l
dGVycy50b3BPcmlnaW4tPmRhdGEoKSA6IG51bGxwdHIsIGNoYWxsZW5nZSwgbmVnb3RpYXRlZExl
Z2FjeVRMUywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtD
T1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJlY2VpdmVS
ZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0ZWRM
ZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2UiKTsKIApJ
bmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENo
ZWNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCShyZXZpc2lvbiAyNTU3NzcpCisrKyBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCB3aWxs
UGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFs
OwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxl
ciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CisgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlh
dGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAg
ICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBk
aWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4
cGVjdGVkVG9TZW5kKSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0RhdGFUYXNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAJKHJldmlzaW9uIDI1NTc3NykKKysrIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTcsNyArOTcsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFzazo6c2NoZWR1bGVGYWlsdXJlKEZh
CiAgICAgbV9mYWlsdXJlVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CiB9CiAKLXZvaWQgTmV0d29y
a0RhdGFUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNl
LCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5l
dHdvcmtEYXRhVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNw
b25zZSwgTmVnb3RpYXRlZExlZ2FjeVRMUyBuZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNv
bXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKHJlc3BvbnNl
LmlzSFRUUDA5KCkpIHsKICAgICAgICAgYXV0byB1cmwgPSByZXNwb25zZS51cmwoKTsKQEAgLTEx
MSwxNyArMTExLDExIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UK
ICAgICAgICAgfQogICAgIH0KICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5k
aWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKKyAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJl
c3BvbnNlKSwgbmVnb3RpYXRlZExlZ2FjeVRMUywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogICAgIGVsc2UKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpJZ25v
cmUpOwogfQogCi12b2lkIE5ldHdvcmtEYXRhVGFzazo6bmVnb3RpYXRlZExlZ2FjeVRMUygpIGNv
bnN0Ci17Ci0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+bmVnb3RpYXRlZExl
Z2FjeVRMUygpOwotfQotCiBib29sIE5ldHdvcmtEYXRhVGFzazo6c2hvdWxkQ2FwdHVyZUV4dHJh
TmV0d29ya0xvYWRNZXRyaWNzKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9jbGllbnQgPyBtX2Ns
aWVudC0+c2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkgOiBmYWxzZTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAko
cmV2aXNpb24gMjU1Nzc3KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
RGF0YVRhc2suaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCBjbGFzcyBOZXR3b3Jr
RGF0YVRhc2tDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybUhU
VFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYm
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNz
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVz
U2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSA9IDA7CkBAIC03MCw3ICs3
MCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2Fubm90U2hvd1VSTCgpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgd2FzQmxvY2tlZEJ5UmVzdHJpY3Rpb25zKCkgPSAwOwogCi0gICAgdmly
dHVhbCB2b2lkIG5lZ290aWF0ZWRMZWdhY3lUTFMoKSBjb25zdCB7IH0KICAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KIAogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYgZXJyb3IpCkBAIC05Miw4ICs5MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgcmVzdW1lKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlQW5kQ2Fu
Y2VsKCkgPSAwOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpOwotICAgIHZvaWQgbmVn
b3RpYXRlZExlZ2FjeVRMUygpIGNvbnN0OworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VD
b21wbGV0aW9uSGFuZGxlciYmKTsKICAgICBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtM
b2FkTWV0cmljcygpIGNvbnN0OwogCiAgICAgZW51bSBjbGFzcyBTdGF0ZSB7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5j
cHAJKHJldmlzaW9uIDI1NTc3NykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0RhdGFUYXNrQmxvYi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5MCw3ICsyOTAsNyBAQCB2
b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRpc3BhdGNoRGlkUmVjCiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIAotICAgIGRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBlcnJvckNvZGVdKFBvbGlj
eUFjdGlvbiBwb2xpY3lBY3Rpb24pIHsKKyAgICBkaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShy
ZXNwb25zZSksIE5lZ290aWF0ZWRMZWdhY3lUTFM6Ok5vLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGVycm9yQ29kZV0oUG9saWN5QWN0aW9uIHBvbGljeUFj
dGlvbikgewogICAgICAgICBMT0coTmV0d29ya1Nlc3Npb24sICIlcCAtIE5ldHdvcmtEYXRhVGFz
a0Jsb2I6OmRpZFJlY2VpdmVSZXNwb25zZSBjb21wbGV0aW9uSGFuZGxlciAoJXUpIiwgdGhpcywg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBvbGljeUFjdGlvbikpOwogCiAgICAgICAgIGlmIChtX3N0
YXRlID09IFN0YXRlOjpDYW5jZWxpbmcgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6Q29tcGxldGVkKSB7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAko
cmV2aXNpb24gMjU1Nzc3KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNiwxMiArMjA2LDcgQEAgdm9pZCBOZXR3b3Jr
TG9hZDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShBdQogICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5h
dXRoZW50aWNhdGlvbk1hbmFnZXIoKS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
bV90YXNrLT5zZXNzaW9uSUQoKSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELCBtX3BhcmFt
ZXRlcnMudG9wT3JpZ2luID8gJm1fcGFyYW1ldGVycy50b3BPcmlnaW4tPmRhdGEoKSA6IG51bGxw
dHIsIGNoYWxsZW5nZSwgbmVnb3RpYXRlZExlZ2FjeVRMUywgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtMb2FkOjpuZWdvdGlhdGVkTGVnYWN5VExTKCkgY29u
c3QKLXsKLSAgICBtX25ldHdvcmtQcm9jZXNzLT5hdXRoZW50aWNhdGlvbk1hbmFnZXIoKS5uZWdv
dGlhdGVkTGVnYWN5VExTKG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCk7Ci19Ci0KLXZvaWQg
TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9u
c2UsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9u
c2UsIE5lZ290aWF0ZWRMZWdhY3lUTFMgbmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21w
bGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CiAgICAgQVNTRVJUKCFtX3Rocm90dGxlKTsKQEAgLTIyNiwxNiArMjIxLDE5
IEBAIHZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXMKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIG5vdGlmeURpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3Bv
bnNlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGlmIChuZWdvdGlhdGVkTGVn
YWN5VExTID09IE5lZ290aWF0ZWRMZWdhY3lUTFM6OlllcykKKyAgICAgICAgbV9uZXR3b3JrUHJv
Y2Vzcy0+YXV0aGVudGljYXRpb25NYW5hZ2VyKCkubmVnb3RpYXRlZExlZ2FjeVRMUyhtX3BhcmFt
ZXRlcnMud2ViUGFnZVByb3h5SUQpOworICAgIAorICAgIG5vdGlmeURpZFJlY2VpdmVSZXNwb25z
ZShXVEZNb3ZlKHJlc3BvbnNlKSwgbmVnb3RpYXRlZExlZ2FjeVRMUywgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtMb2FkOjpub3RpZnlEaWRSZWNlaXZlUmVz
cG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNwb25zZUNvbXBsZXRpb25IYW5k
bGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtMb2FkOjpub3RpZnlEaWRSZWNl
aXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVkTGVnYWN5
VExTIG5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAg
cmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yayk7CiAg
ICAgaWYgKG1fcGFyYW1ldGVycy5uZWVkc0NlcnRpZmljYXRlSW5mbykKLSAgICAgICAgcmVzcG9u
c2UuaW5jbHVkZUNlcnRpZmljYXRlSW5mbygpOworICAgICAgICByZXNwb25zZS5pbmNsdWRlQ2Vy
dGlmaWNhdGVJbmZvKG5lZ290aWF0ZWRMZWdhY3lUTFMgPT0gTmVnb3RpYXRlZExlZ2FjeVRMUzo6
WWVzID8gVXNlZExlZ2FjeVRMUzo6WWVzIDogVXNlZExlZ2FjeVRMUzo6Tm8pOwogCiAgICAgbV9j
bGllbnQuZ2V0KCkuZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CkBAIC0yNjUsNyArMjYzLDcgQEAgdm9pZCBOZXR3b3Jr
TG9hZDo6dGhyb3R0bGVEZWxheUNvbXBsZXRlZAogCiAgICAgYXV0byB0aHJvdHRsZSA9IFdURk1v
dmUobV90aHJvdHRsZSk7CiAKLSAgICBub3RpZnlEaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZSh0
aHJvdHRsZS0+cmVzcG9uc2UpLCBXVEZNb3ZlKHRocm90dGxlLT5yZXNwb25zZUNvbXBsZXRpb25I
YW5kbGVyKSk7CisgICAgbm90aWZ5RGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUodGhyb3R0bGUt
PnJlc3BvbnNlKSwgTmVnb3RpYXRlZExlZ2FjeVRMUzo6Tm8sIFdURk1vdmUodGhyb3R0bGUtPnJl
c3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrTG9hZDo6ZGlkU2Vu
ZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3Rl
ZFRvU2VuZCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
LmgJKHJldmlzaW9uIDI1NTc3NykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsMTYgKzc0LDE1IEBAIHByaXZhdGU6CiAg
ICAgLy8gTmV0d29ya0RhdGFUYXNrQ2xpZW50CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlk
UmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdv
dGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJl
c3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBS
ZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21w
bGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29y
ZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50
NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBm
aW5hbDsKICAgICB2b2lkIHdhc0Jsb2NrZWQoKSBmaW5hbDsKICAgICB2b2lkIGNhbm5vdFNob3dV
UkwoKSBmaW5hbDsKICAgICB2b2lkIHdhc0Jsb2NrZWRCeVJlc3RyaWN0aW9ucygpIGZpbmFsOwot
ICAgIHZvaWQgbmVnb3RpYXRlZExlZ2FjeVRMUygpIGNvbnN0IGZpbmFsOwogCi0gICAgdm9pZCBu
b3RpZnlEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNw
b25zZUNvbXBsZXRpb25IYW5kbGVyJiYpOworICAgIHZvaWQgbm90aWZ5RGlkUmVjZWl2ZVJlc3Bv
bnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVz
cG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIHRocm90dGxlRGVsYXlDb21wbGV0
ZWQoKTsKIAogICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8TmV0d29ya0xvYWRDbGllbnQ+IG1f
Y2xpZW50OwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyNTU3NzcpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC01NSw2ICs1NSw4IEBAIGNsYXNzIE5ldHdvcmtMb2FkQ2hlY2tlcjsKIGNsYXNzIFNlcnZpY2VX
b3JrZXJGZXRjaFRhc2s7CiBjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb247CiAKK2VudW0gY2xh
c3MgTmVnb3RpYXRlZExlZ2FjeVRMUyA6IGJvb2w7CisKIHN0cnVjdCBSZXNvdXJjZUxvYWRJbmZv
OwogCiBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUGluZ0xvYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUGluZ0xvYWQuY3BwCShyZXZpc2lvbiAyNTU3NzcpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYwLDcgKzE2
MCw3IEBAIHZvaWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UoQXV0aGUKICAgICBkaWRG
aW5pc2goUmVzb3VyY2VFcnJvciB7IFN0cmluZygpLCAwLCBjdXJyZW50VVJMKCksICJGYWlsZWQg
SFRUUCBhdXRoZW50aWNhdGlvbiJfcywgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJv
bCB9KTsKIH0KIAotdm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVz
cG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9u
c2UmJiByZXNwb25zZSwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFu
ZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
ImRpZFJlY2VpdmVSZXNwb25zZSAtIGh0dHBTdGF0dXNDb2RlOiAlZCIsIHJlc3BvbnNlLmh0dHBT
dGF0dXNDb2RlKCkpOwogICAgIGF1dG8gd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCShyZXZpc2lvbiAyNTU3
NzcpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgd2lsbFBlcmZvcm1I
VFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2
b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
JiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmlu
YWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2Fj
eVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQg
ZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkU2VuZERh
dGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRv
U2VuZCkgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVN0b3JhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaAkocmV2aXNpb24gMjU1Nzc3KQorKysg
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNyw3ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IGFw
cHJveGltYXRlU2l6ZSgpIGNvbnN0OwogCiAgICAgLy8gSW5jcmVtZW50aW5nIHRoaXMgbnVtYmVy
IHdpbGwgZGVsZXRlIGFsbCBleGlzdGluZyBjYWNoZSBjb250ZW50IGZvciBldmVyeW9uZS4gRG8g
eW91IHJlYWxseSBuZWVkIHRvIGRvIGl0PwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB2ZXJz
aW9uID0gMTU7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHZlcnNpb24gPSAxNjsKIAogICAg
IFN0cmluZyBiYXNlUGF0aElzb2xhdGVkQ29weSgpIGNvbnN0OwogICAgIFN0cmluZyB2ZXJzaW9u
UGF0aCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAkocmV2aXNpb24gMjU1Nzc3KQor
KysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2Nv
YS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRp
ZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhw
ZWN0ZWRUb1NlbmQpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21w
bGV0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3Mm
KTsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBS
ZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CiAKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJl
ZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJik7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNr
Q29jb2EubW0JKHJldmlzaW9uIDI1NTc3NykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTM3Mywx
MCArMzczLDEwIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVEYXQKICAg
ICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKFdURk1vdmUoZGF0YSkpOwogfQogCi12b2lk
IE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmIHJlc3BvbnNlLCBXZWJLaXQ6OlJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIm
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2Vp
dmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0
ZWRMZWdhY3lUTFMgbmVnb3RpYXRlZExlZ2FjeVRMUywgV2ViS2l0OjpSZXNwb25zZUNvbXBsZXRp
b25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgRU1JVF9TSUdOUE9TVChtX3Rh
c2ssICJyZWNlaXZlZCByZXNwb25zZSBoZWFkZXJzIik7Ci0gICAgTmV0d29ya0RhdGFUYXNrOjpk
aWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKKyAgICBOZXR3b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3Zl
KHJlc3BvbnNlKSwgbmVnb3RpYXRlZExlZ2FjeVRMUywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogfQogCiB2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxl
ciYmIGNvbXBsZXRpb25IYW5kbGVyKQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQkocmV2aXNpb24g
MjU1Nzc3KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04MTgsMjQgKzgxOCwyMiBAQCAtICh2b2lk
KVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3NpCiAgICAgaWYgKGF1dG8qIG5ldHdvcmtE
YXRhVGFzayA9IFtzZWxmIGV4aXN0aW5nVGFzazpkYXRhVGFza10pIHsKICAgICAgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgICAgICBib29sIG5lZ290aWF0ZWRMZWdhY3lUTFMg
PSBmYWxzZTsKKyAgICAgICAgTmVnb3RpYXRlZExlZ2FjeVRMUyBuZWdvdGlhdGVkTGVnYWN5VExT
ID0gTmVnb3RpYXRlZExlZ2FjeVRMUzo6Tm87CiAjaWYgSEFWRShUTFNfUFJPVE9DT0xfVkVSU0lP
Tl9UKQogICAgICAgICBOU1VSTFNlc3Npb25UYXNrVHJhbnNhY3Rpb25NZXRyaWNzICptZXRyaWNz
ID0gZGF0YVRhc2suX2luY29tcGxldGVUYXNrTWV0cmljcy50cmFuc2FjdGlvbk1ldHJpY3MubGFz
dE9iamVjdDsKICAgICAgICAgYXV0byB0bHNWZXJzaW9uID0gKHRsc19wcm90b2NvbF92ZXJzaW9u
X3QpbWV0cmljcy5uZWdvdGlhdGVkVExTUHJvdG9jb2xWZXJzaW9uLnVuc2lnbmVkU2hvcnRWYWx1
ZTsKICAgICAgICAgaWYgKHRsc1ZlcnNpb24gPT0gdGxzX3Byb3RvY29sX3ZlcnNpb25fVExTdjEw
IHx8IHRsc1ZlcnNpb24gPT0gdGxzX3Byb3RvY29sX3ZlcnNpb25fVExTdjExKQotICAgICAgICAg
ICAgbmVnb3RpYXRlZExlZ2FjeVRMUyA9IHRydWU7CisgICAgICAgICAgICBuZWdvdGlhdGVkTGVn
YWN5VExTID0gTmVnb3RpYXRlZExlZ2FjeVRMUzo6WWVzOwogICAgICAgICBVTlVTRURfUEFSQU0o
bWV0cmljcyk7CiAjZWxzZSAvLyBXZSBkbyBub3QgbmVlZCB0byBjaGVjayBfVExTTmVnb3RpYXRl
ZFByb3RvY29sVmVyc2lvbiBpZiB3ZSBoYXZlIG1ldHJpY3MubmVnb3RpYXRlZFRMU1Byb3RvY29s
VmVyc2lvbiBiZWNhdXNlIGl0IHdvcmtzIGF0IHJlc3BvbnNlIHRpbWUgZXZlbiBiZWZvcmUgcmRh
cjovL3Byb2JsZW0vNTY1MjI2MDEKICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfQkVHSU4KICAgICAgICAgaWYgKFtkYXRhVGFzayByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKF9UTFNOZWdvdGlhdGVkUHJvdG9jb2xWZXJzaW9uKV0pIHsKICAgICAgICAgICAgIFNTTFBy
b3RvY29sIHRsc1ZlcnNpb24gPSBbZGF0YVRhc2sgX1RMU05lZ290aWF0ZWRQcm90b2NvbFZlcnNp
b25dOwogICAgICAgICAgICAgaWYgKHRsc1ZlcnNpb24gPT0ga1RMU1Byb3RvY29sMTEgfHwgdGxz
VmVyc2lvbiA9PSBrVExTUHJvdG9jb2wxKQotICAgICAgICAgICAgICAgIG5lZ290aWF0ZWRMZWdh
Y3lUTFMgPSB0cnVlOworICAgICAgICAgICAgICAgIG5lZ290aWF0ZWRMZWdhY3lUTFMgPSBOZWdv
dGlhdGVkTGVnYWN5VExTOjpZZXM7CiAgICAgICAgIH0KICAgICAgICAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfRU5ECiAjZW5kaWYKLSAgICAgICAgaWYgKG5lZ290aWF0ZWRMZWdhY3lU
TFMpCi0gICAgICAgICAgICBuZXR3b3JrRGF0YVRhc2stPm5lZ290aWF0ZWRMZWdhY3lUTFMoKTsK
ICAgICAgICAgCiAgICAgICAgIC8vIEF2b2lkIE1JTUUgdHlwZSBzbmlmZmluZyBpZiB0aGUgcmVz
cG9uc2UgY29tZXMgYmFjayBhcyAzMDQgTm90IE1vZGlmaWVkLgogICAgICAgICBpbnQgc3RhdHVz
Q29kZSA9IFtyZXNwb25zZSBpc0tpbmRPZkNsYXNzOk5TSFRUUFVSTFJlc3BvbnNlLmNsYXNzXSA/
IFsoTlNIVFRQVVJMUmVzcG9uc2UgKilyZXNwb25zZSBzdGF0dXNDb2RlXSA6IDA7CkBAIC04NTQs
NyArODUyLDcgQEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaQogICAg
ICAgICBjb3B5VGltaW5nRGF0YShbZGF0YVRhc2sgX3RpbWluZ0RhdGFdLCByZXNvdXJjZVJlc3Bv
bnNlLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoKSk7CiAKICAgICAgICAgYXV0byBjb21w
bGV0aW9uSGFuZGxlckNvcHkgPSBCbG9ja19jb3B5KGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICAg
ICAgbmV0d29ya0RhdGFUYXNrLT5kaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShyZXNvdXJjZVJl
c3BvbnNlKSwgW2NvbXBsZXRpb25IYW5kbGVyQ29weSwgdGFza0lkZW50aWZpZXJdKFdlYkNvcmU6
OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIHsKKyAgICAgICAgbmV0d29ya0RhdGFUYXNrLT5k
aWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShyZXNvdXJjZVJlc3BvbnNlKSwgbmVnb3RpYXRlZExl
Z2FjeVRMUywgW2NvbXBsZXRpb25IYW5kbGVyQ29weSwgdGFza0lkZW50aWZpZXJdKFdlYkNvcmU6
OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIHsKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgICAg
ICAgICBMT0coTmV0d29ya1Nlc3Npb24sICIlbGx1IGRpZFJlY2VpdmVSZXNwb25zZSBjb21wbGV0
aW9uSGFuZGxlciAoJWQpIiwgdGFza0lkZW50aWZpZXIsIHBvbGljeUFjdGlvbik7CiAjZWxzZQpJ
bmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1
cmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9O
ZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAkocmV2aXNpb24gMjU1Nzc3KQorKysgU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMjQsNyArMjI0LDcgQEAgYm9vbCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpzaG91bGRS
ZWRpcmVjdAogCiB2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6Omludm9rZURpZFJlY2VpdmVSZXNw
b25zZSgpCiB7Ci0gICAgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UobV9yZXNw
b25zZSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKFBvbGljeUFjdGlv
biBwb2xpY3lBY3Rpb24pIHsKKyAgICBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25z
ZShtX3Jlc3BvbnNlKSwgTmVnb3RpYXRlZExlZ2FjeVRMUzo6Tm8sIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyldKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIHsKICAgICAg
ICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNhbmNlbGluZyB8fCBtX3N0YXRlID09IFN0YXRlOjpD
b21wbGV0ZWQpCiAgICAgICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAJ
KHJldmlzaW9uIDI1NTc3NykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9O
ZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc4LDcgKzM3OCw3IEBA
IHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlzcGF0Y2hEaWRSZWMKICAgICBkZXByZWNhdGVk
UmVzcG9uc2VNZXRyaWNzLnJlcXVlc3RTdGFydCA9IG1fbmV0d29ya0xvYWRNZXRyaWNzLnJlcXVl
c3RTdGFydDsKICAgICBkZXByZWNhdGVkUmVzcG9uc2VNZXRyaWNzLnJlc3BvbnNlU3RhcnQgPSBt
X25ldHdvcmtMb2FkTWV0cmljcy5yZXNwb25zZVN0YXJ0OwogCi0gICAgZGlkUmVjZWl2ZVJlc3Bv
bnNlKFJlc291cmNlUmVzcG9uc2UobV9yZXNwb25zZSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyldKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIHsKKyAgICBkaWRSZWNl
aXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZShtX3Jlc3BvbnNlKSwgTmVnb3RpYXRlZExlZ2Fj
eVRMUzo6Tm8sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKFBvbGljeUFj
dGlvbiBwb2xpY3lBY3Rpb24pIHsKICAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNhbmNl
bGluZyB8fCBtX3N0YXRlID09IFN0YXRlOjpDb21wbGV0ZWQpIHsKICAgICAgICAgICAgIGNsZWFy
UmVxdWVzdCgpOwogICAgICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGFnZUxvYWRTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGFnZUxvYWRTdGF0ZS5jcHAJKHJldmlzaW9uIDI1NTc3NykKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTcsNyAr
MzE3LDcgQEAgdm9pZCBQYWdlTG9hZFN0YXRlOjpkaWRGYWlsUHJvdmlzaW9uYWxMbwogICAgIG1f
dW5jb21taXR0ZWRTdGF0ZS51bnJlYWNoYWJsZVVSTCA9IG1fbGFzdFVucmVhY2hhYmxlVVJMOwog
fQogCi12b2lkIFBhZ2VMb2FkU3RhdGU6OmRpZENvbW1pdExvYWQoY29uc3QgVHJhbnNhY3Rpb246
OlRva2VuJiB0b2tlbiwgV2ViQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wg
aGFzSW5zZWN1cmVDb250ZW50KQordm9pZCBQYWdlTG9hZFN0YXRlOjpkaWRDb21taXRMb2FkKGNv
bnN0IFRyYW5zYWN0aW9uOjpUb2tlbiYgdG9rZW4sIFdlYkNlcnRpZmljYXRlSW5mbyYgY2VydGlm
aWNhdGVJbmZvLCBib29sIGhhc0luc2VjdXJlQ29udGVudCwgYm9vbCB1c2VkTGVnYWN5VExTKQog
ewogICAgIEFTU0VSVF9VTlVTRUQodG9rZW4sICZ0b2tlbi5tX3BhZ2VMb2FkU3RhdGUgPT0gdGhp
cyk7CiAgICAgQVNTRVJUKG1fdW5jb21taXR0ZWRTdGF0ZS5zdGF0ZSA9PSBTdGF0ZTo6UHJvdmlz
aW9uYWwpOwpAQCAtMzI4LDcgKzMyOCw3IEBAIHZvaWQgUGFnZUxvYWRTdGF0ZTo6ZGlkQ29tbWl0
TG9hZChjb25zdCAKIAogICAgIG1fdW5jb21taXR0ZWRTdGF0ZS51cmwgPSBtX3VuY29tbWl0dGVk
U3RhdGUucHJvdmlzaW9uYWxVUkw7CiAgICAgbV91bmNvbW1pdHRlZFN0YXRlLnByb3Zpc2lvbmFs
VVJMID0gU3RyaW5nKCk7Ci0gICAgbV91bmNvbW1pdHRlZFN0YXRlLm5lZ290aWF0ZWRMZWdhY3lU
TFMgPSBmYWxzZTsKKyAgICBtX3VuY29tbWl0dGVkU3RhdGUubmVnb3RpYXRlZExlZ2FjeVRMUyA9
IHVzZWRMZWdhY3lUTFM7CiAKICAgICBtX3VuY29tbWl0dGVkU3RhdGUudGl0bGUgPSBTdHJpbmco
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmgJKHJldmlz
aW9uIDI1NTc3NykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMTYzLDcgKzE2Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJl
Y2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChjb25zdCBUcmFuc2FjdGlvbjo6
VG9rZW4mLCBjb25zdCBTdHJpbmcmIHVybCk7CiAgICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxM
b2FkKGNvbnN0IFRyYW5zYWN0aW9uOjpUb2tlbiYpOwogCi0gICAgdm9pZCBkaWRDb21taXRMb2Fk
KGNvbnN0IFRyYW5zYWN0aW9uOjpUb2tlbiYsIFdlYkNlcnRpZmljYXRlSW5mbyYsIGJvb2wgaGFz
SW5zZWN1cmVDb250ZW50KTsKKyAgICB2b2lkIGRpZENvbW1pdExvYWQoY29uc3QgVHJhbnNhY3Rp
b246OlRva2VuJiwgV2ViQ2VydGlmaWNhdGVJbmZvJiwgYm9vbCBoYXNJbnNlY3VyZUNvbnRlbnQs
IGJvb2wgdXNlZExlZ2FjeVRMUyk7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkKGNvbnN0IFRyYW5z
YWN0aW9uOjpUb2tlbiYpOwogICAgIHZvaWQgZGlkRmFpbExvYWQoY29uc3QgVHJhbnNhY3Rpb246
OlRva2VuJik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFn
ZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNp
b25hbFBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI1NTc3NykKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY0LDcg
KzI2NCw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZEZhaWxQcm92aXMKICAgICBt
X3BhZ2UuZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKG1fcHJvY2Vzcy5jb3B5
UmVmKCksIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVTZWN1cml0eU9yaWdpbiksIG5hdmlnYXRpb25J
RCwgcHJvdmlzaW9uYWxVUkwsIGVycm9yLCB3aWxsQ29udGludWVMb2FkaW5nLCB1c2VyRGF0YSk7
IC8vIE1heSBkZWxldGUgfHRoaXN8LgogfQogCi12b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpk
aWRDb21taXRMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNv
bnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2Vy
dGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVu
dCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3Vy
ZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgUHJvdmlzaW9uYWxQYWdl
UHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFz
Q3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJD
b3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCB1c2VkTGVnYWN5VExT
LCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2Vj
dXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYgdXNl
ckRhdGEpCiB7CiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTI3NCw3ICsyNzQsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFn
ZVByb3h5OjpkaWRDb21taXRMb2FkCiAgICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBh
Z2VJRCk7CiAKICAgICBtX3dhc0NvbW1pdHRlZCA9IHRydWU7Ci0gICAgbV9wYWdlLmNvbW1pdFBy
b3Zpc2lvbmFsUGFnZShmcmFtZUlELCBuYXZpZ2F0aW9uSUQsIG1pbWVUeXBlLCBmcmFtZUhhc0N1
c3RvbUNvbnRlbnRQcm92aWRlciwgZnJhbWVMb2FkVHlwZSwgY2VydGlmaWNhdGVJbmZvLCBjb250
YWluc1BsdWdpbkRvY3VtZW50LCBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIHVzZXJEYXRhKTsg
Ly8gV2lsbCBkZWxldGUgfHRoaXN8LgorICAgIG1fcGFnZS5jb21taXRQcm92aXNpb25hbFBhZ2Uo
ZnJhbWVJRCwgbmF2aWdhdGlvbklELCBtaW1lVHlwZSwgZnJhbWVIYXNDdXN0b21Db250ZW50UHJv
dmlkZXIsIGZyYW1lTG9hZFR5cGUsIGNlcnRpZmljYXRlSW5mbywgdXNlZExlZ2FjeVRMUywgY29u
dGFpbnNQbHVnaW5Eb2N1bWVudCwgZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCB1c2VyRGF0YSk7
IC8vIFdpbGwgZGVsZXRlIHx0aGlzfC4KIH0KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6
ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEoY29uc3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9y
ZSYgc3RvcmUsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCShyZXZpc2lvbiAyNTU3NzcpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjIsNyArMTIyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFBlcmZvcm1D
bGllbnRSZWRpcmVjdChjb25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0cmluZywgY29uc3QgU3RyaW5n
JiBkZXN0aW5hdGlvblVSTFN0cmluZywgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2
b2lkIGRpZENyZWF0ZU1haW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZv
aWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMJiYsIFVSTCYmIHVucmVhY2hhYmxlVVJMLCBj
b25zdCBVc2VyRGF0YSYpOwotICAgIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFt
ZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mLCBib29sIGNvbnRhaW5z
UGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9y
Y2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgZGlkQ29t
bWl0TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVu
dFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZp
Y2F0ZUluZm8mLCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVu
dCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3Vy
ZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNv
bnN0IFN0cmluZyYgcHJvdmlzaW9uYWxVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
LCBXZWJDb3JlOjpXaWxsQ29udGludWVMb2FkaW5nLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZv
aWQgc3RhcnRVUkxTY2hlbWVUYXNrKFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYpOwogICAgIHZv
aWQgYmFja0ZvcndhcmRHb1RvSXRlbShjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVu
dGlmaWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUm
JiwgY29uc3QgV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzJik+JiYpOwpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyNTU3NzcpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MTYxLDcgKzMxNjEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lv
CiAgICAgc2VuZGVyLT5zZW5kKGFjdGlvbiwgbmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5hdmln
YXRpb25JRCgpIDogMCwgZG93bmxvYWRJRCwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsKIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OmNvbW1pdFByb3Zpc2lvbmFsUGFnZShGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRU
eXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9v
bCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNv
bnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRh
KQordm9pZCBXZWJQYWdlUHJveHk6OmNvbW1pdFByb3Zpc2lvbmFsUGFnZShGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRU
eXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9v
bCB1c2VkTGVnYWN5VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdl
YkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25z
dCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgQVNTRVJUKG1fcHJvdmlzaW9uYWxQYWdlKTsK
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJjb21taXRQcm92aXNpb25hbFBh
Z2U6IG5ld1BJRCA9ICVpIiwgbV9wcm92aXNpb25hbFBhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzSWRl
bnRpZmllcigpKTsKQEAgLTMxOTUsNyArMzE5NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb21t
aXRQcm92aXNpb25hbFBhZ2UKICAgICBjb25zdCBhdXRvIG9sZFdlYlBhZ2VJRCA9IG1fd2ViUGFn
ZUlEOwogICAgIHN3YXBUb1Byb3Zpc2lvbmFsUGFnZShzdGQ6OmV4Y2hhbmdlKG1fcHJvdmlzaW9u
YWxQYWdlLCBudWxscHRyKSk7CiAKLSAgICBkaWRDb21taXRMb2FkRm9yRnJhbWUoZnJhbWVJRCwg
bmF2aWdhdGlvbklELCBtaW1lVHlwZSwgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIGZy
YW1lTG9hZFR5cGUsIGNlcnRpZmljYXRlSW5mbywgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgZm9y
Y2VkSGFzSW5zZWN1cmVDb250ZW50LCB1c2VyRGF0YSk7CisgICAgZGlkQ29tbWl0TG9hZEZvckZy
YW1lKGZyYW1lSUQsIG5hdmlnYXRpb25JRCwgbWltZVR5cGUsIGZyYW1lSGFzQ3VzdG9tQ29udGVu
dFByb3ZpZGVyLCBmcmFtZUxvYWRUeXBlLCBjZXJ0aWZpY2F0ZUluZm8sIHVzZWRMZWdhY3lUTFMs
IGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgdXNlckRh
dGEpOwogCiAgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5kaWRDb21taXRQcm92aXNpb25hbFBh
Z2Uob2xkV2ViUGFnZUlELCBtX3dlYlBhZ2VJRCk7CiB9CkBAIC00NDgxLDcgKzQ0ODEsNyBAQCBz
dGF0aWMgT3B0aW9uU2V0PENyb3NzU2l0ZU5hdmlnYXRpb25EYXRhCiB9CiAjZW5kaWYKIAotdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29s
IGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBvcGFxdWVGcmFtZUxvYWRU
eXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9v
bCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+IGhh
c0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdl
UHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFz
Q3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBvcGFxdWVGcmFtZUxvYWRUeXBlLCBjb25z
dCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCB1c2VkTGVn
YWN5VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPEhhc0luc2VjdXJl
Q29udGVudD4gaGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7
CiAgICAgTE9HKExvYWRpbmcsICIoTG9hZGluZykgV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGRp
ZENvbW1pdExvYWRGb3JGcmFtZSBpbiBuYXZpZ2F0aW9uICUiIFBSSXU2NCwgbV9pZGVudGlmaWVy
LnRvVUludDY0KCksIG5hdmlnYXRpb25JRCk7CiAgICAgTE9HKEJhY2tGb3J3YXJkLCAiKEJhY2sv
Rm9yd2FyZCkgQWZ0ZXIgbG9hZCBjb21taXQsIGJhY2svZm9yd2FyZCBsaXN0IGlzIG5vdzolcyIs
IG1fYmFja0ZvcndhcmRMaXN0LT5sb2dnaW5nU3RyaW5nKCkpOwpAQCAtNDUyMyw3ICs0NTIzLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZQogICAgIGJvb2wgbWFy
a1BhZ2VJbnNlY3VyZSA9IGhhc0luc2VjdXJlQ29udGVudCA/IGhhc0luc2VjdXJlQ29udGVudC52
YWx1ZSgpID09IEhhc0luc2VjdXJlQ29udGVudDo6WWVzIDogbV90cmVhdHNTSEExQ2VydGlmaWNh
dGVzQXNJbnNlY3VyZSAmJiBjZXJ0aWZpY2F0ZUluZm8uY29udGFpbnNOb25Sb290U0hBMVNpZ25l
ZENlcnRpZmljYXRlKCk7CiAKICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpIHsKLSAgICAg
ICAgbV9wYWdlTG9hZFN0YXRlLmRpZENvbW1pdExvYWQodHJhbnNhY3Rpb24sIHdlYkNlcnRpZmlj
YXRlSW5mbywgbWFya1BhZ2VJbnNlY3VyZSk7CisgICAgICAgIG1fcGFnZUxvYWRTdGF0ZS5kaWRD
b21taXRMb2FkKHRyYW5zYWN0aW9uLCB3ZWJDZXJ0aWZpY2F0ZUluZm8sIG1hcmtQYWdlSW5zZWN1
cmUsIHVzZWRMZWdhY3lUTFMpOwogICAgICAgICBtX3Nob3VsZFN1cHByZXNzTmV4dEF1dG9tYXRp
Y05hdmlnYXRpb25TbmFwc2hvdCA9IGZhbHNlOwogICAgIH0gZWxzZSBpZiAobWFya1BhZ2VJbnNl
Y3VyZSkKICAgICAgICAgbV9wYWdlTG9hZFN0YXRlLmRpZERpc3BsYXlPclJ1bkluc2VjdXJlQ29u
dGVudCh0cmFuc2FjdGlvbik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAkocmV2aXNpb24gMjU1Nzc3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1ODcsNyArMTU4Nyw3IEBAIHB1YmxpYzoKICNl
bmRpZgogCiAgICAgUHJvdmlzaW9uYWxQYWdlUHJveHkqIHByb3Zpc2lvbmFsUGFnZVByb3h5KCkg
Y29uc3QgeyByZXR1cm4gbV9wcm92aXNpb25hbFBhZ2UuZ2V0KCk7IH0KLSAgICB2b2lkIGNvbW1p
dFByb3Zpc2lvbmFsUGFnZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRl
bnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlm
aWNhdGVJbmZvJiwgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3Jl
OjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNl
ckRhdGEmKTsKKyAgICB2b2lkIGNvbW1pdFByb3Zpc2lvbmFsUGFnZShXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Ym9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlw
ZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiwgYm9vbCB1c2VkTGVnYWN5VExTLCBi
b29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJl
Q29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYpOwogCiAg
ICAgLy8gTG9naWMgc2hhcmVkIGJldHdlZW4gdGhlIFdlYlBhZ2VQcm94eSBhbmQgdGhlIFByb3Zp
c2lvbmFsUGFnZVByb3h5LgogICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFt
ZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMJiYsIFVSTCYmIHVucmVhY2hhYmxlVVJMLCBjb25z
dCBVc2VyRGF0YSYpOwpAQCAtMTczNyw3ICsxNzM3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRp
ZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsK
ICAgICB2b2lkIGRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmKTsKICAgICB2b2lkIGRpZEZh
aWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYsIFdlYkNvcmU6OldpbGxDb250aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJE
YXRhJik7Ci0gICAgdm9pZCBkaWRDb21taXRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJv
b2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9hZFR5cGUs
IGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1
bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNl
Y3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkaWRDb21taXRMb2FkRm9y
RnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIs
IHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYs
IGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25h
bDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwg
Y29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1l
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBV
c2VyRGF0YSYpOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYpOwogICAg
IHZvaWQgZGlkRmFpbExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFVz
ZXJEYXRhJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNTU3NzcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTEyNiw3ICsx
MjYsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIERpZENhbmNlbENsaWVudFJl
ZGlyZWN0Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCiAgICAgRGlk
Q2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwgdXJsKQogICAgIERpZEZhaWxQcm92aXNp
b25hbExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIFN0cmluZyBwcm92aXNpb25hbFVSTCwgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciBlcnJvciwgZW51bTpib29sIFdlYkNvcmU6OldpbGxDb250aW51ZUxvYWRpbmcgd2lsbENv
bnRpbnVlTG9hZGluZywgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKLSAgICBEaWRDb21taXRM
b2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgU3RyaW5nIG1pbWVUeXBlLCBib29sIGhhc0N1c3RvbUNvbnRlbnRQcm92aWRl
ciwgdWludDMyX3QgbG9hZFR5cGUsIFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0
ZUluZm8sIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFz
SW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIFdlYktpdDo6VXNlckRh
dGEgdXNlckRhdGEpCisgICAgRGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFN0cmluZyBtaW1lVHlwZSwg
Ym9vbCBoYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGxvYWRUeXBlLCBXZWJDb3Jl
OjpDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvLCBib29sIHVzZWRMZWdhY3lUTFMsIGJv
b2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVD
b250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRh
dGEpCiAgICAgRGlkRmFpbExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9y
LCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIERpZEZpbmlzaERvY3VtZW50TG9hZEZv
ckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkRmluaXNoTG9hZEZvckZy
YW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAJKHJldmlzaW9uIDI1NTc3NykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU2MCw3ICs1NjAsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZENvCiAgICAgd2ViUGFnZS0+c2FuZGJveEV4dGVuc2lvblRyYWNrZXIoKS5kaWRDb21taXRQcm92
aXNpb25hbExvYWQobV9mcmFtZSk7CiAKICAgICAvLyBOb3RpZnkgdGhlIFVJUHJvY2Vzcy4KLSAg
ICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENvbW1pdExvYWRGb3JG
cmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIGRvY3VtZW50TG9hZGVyLm5hdmlnYXRpb25JRCgpLCBk
b2N1bWVudExvYWRlci5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fZnJhbWVIYXNDdXN0b21Db250
ZW50UHJvdmlkZXIsIHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+
bG9hZGVyKCkubG9hZFR5cGUoKSksIHZhbHVlT3JDb21wdXRlKGRvY3VtZW50TG9hZGVyLnJlc3Bv
bnNlKCkuY2VydGlmaWNhdGVJbmZvKCksIFtdIHsgcmV0dXJuIENlcnRpZmljYXRlSW5mbygpOyB9
KSwgbV9mcmFtZS0+Y29yZUZyYW1lKCktPmRvY3VtZW50KCktPmlzUGx1Z2luRG9jdW1lbnQoKSwg
aGFzSW5zZWN1cmVDb250ZW50LCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFu
c2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKKyAgICB3ZWJQ
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENvbW1pdExvYWRGb3JGcmFtZSht
X2ZyYW1lLT5mcmFtZUlEKCksIGRvY3VtZW50TG9hZGVyLm5hdmlnYXRpb25JRCgpLCBkb2N1bWVu
dExvYWRlci5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fZnJhbWVIYXNDdXN0b21Db250ZW50UHJv
dmlkZXIsIHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVy
KCkubG9hZFR5cGUoKSksIHZhbHVlT3JDb21wdXRlKGRvY3VtZW50TG9hZGVyLnJlc3BvbnNlKCku
Y2VydGlmaWNhdGVJbmZvKCksIFtdIHsgcmV0dXJuIENlcnRpZmljYXRlSW5mbygpOyB9KSwgZG9j
dW1lbnRMb2FkZXIucmVzcG9uc2UoKS51c2VkTGVnYWN5VExTKCksIG1fZnJhbWUtPmNvcmVGcmFt
ZSgpLT5kb2N1bWVudCgpLT5pc1BsdWdpbkRvY3VtZW50KCksIGhhc0luc2VjdXJlQ29udGVudCwg
VXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxl
cyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7CiAgICAgd2ViUGFnZS0+ZGlkQ29tbWl0TG9hZCht
X2ZyYW1lKTsKIH0KIApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0NoYW5nZUxvZwkocmV2aXNpb24gMjU1Nzc3KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjAtMDItMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNYWtlIFdLV2ViVmlldy5fbmVnb3Rp
YXRlZExlZ2FjeVRMUyBhY2N1cmF0ZSB3aGVuIGxvYWRpbmcgbWFpbiByZXNvdW9yY2UgZnJvbSBu
ZXR3b3JrIG9yIGNhY2hlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDcyMDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBIVFRQU2VydmVyIG5vdyBzdXBwb3J0cyBIVFRQUy4gVGVsbCB5b3VyIGZyaWVuZHMh
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NoYWxsZW5nZS5t
bToKKyAgICAgICAgKHRlc3RDZXJ0aWZpY2F0ZSk6CisgICAgICAgICh0ZXN0SWRlbnRpdHkpOgor
ICAgICAgICAoY3JlZGVudGlhbFdpdGhJZGVudGl0eSk6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9UTFNEZXByZWNhdGlvbi5tbToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OndlYlZpZXdXaXRoTmF2aWdhdGlvbkRlbGVnYXRlKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5o
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OkhUVFBTZXJ2ZXIpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6SFRUUFNlcnZlcjo6cmVxdWVzdCBjb25zdCk6CisKIDIwMjAtMDItMDQgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggTWFj
IENNYWtlIGJ1aWxkCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0NoYWxsZW5nZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0NoYWxsZW5nZS5tbQkocmV2aXNpb24gMjU1Nzc3KQorKysgVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9DaGFsbGVuZ2UubW0JKHdvcmtpbmcgY29weSkKQEAg
LTI1LDYgKzI1LDcgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAKKyNpbXBvcnQgIkhUVFBTZXJ2
ZXIuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUQ1BTZXJ2ZXIu
aCIKICNpbXBvcnQgIlRlc3QuaCIKQEAgLTQzLDExICs0NCwxNCBAQAogCiBzdGF0aWMgYm9vbCBu
YXZpZ2F0aW9uRmluaXNoZWQ7CiAKLXN0YXRpYyBSZXRhaW5QdHI8TlNVUkxDcmVkZW50aWFsPiBj
cmVkZW50aWFsV2l0aElkZW50aXR5KCkKK3N0YXRpYyBSZXRhaW5QdHI8U2VjQ2VydGlmaWNhdGVS
ZWY+IHRlc3RDZXJ0aWZpY2F0ZSgpCiB7CiAgICAgYXV0byBjZXJ0aWZpY2F0ZUJ5dGVzID0gVGVz
dFdlYktpdEFQSTo6VENQU2VydmVyOjp0ZXN0Q2VydGlmaWNhdGUoKTsKLSAgICBhdXRvIGNlcnRp
ZmljYXRlID0gYWRvcHRDRihTZWNDZXJ0aWZpY2F0ZUNyZWF0ZVdpdGhEYXRhKG51bGxwdHIsIChf
X2JyaWRnZSBDRkRhdGFSZWYpW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmNlcnRpZmljYXRlQnl0ZXMu
ZGF0YSgpIGxlbmd0aDpjZXJ0aWZpY2F0ZUJ5dGVzLnNpemUoKV0pKTsKLSAgICAKKyAgICByZXR1
cm4gYWRvcHRDRihTZWNDZXJ0aWZpY2F0ZUNyZWF0ZVdpdGhEYXRhKG51bGxwdHIsIChfX2JyaWRn
ZSBDRkRhdGFSZWYpW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmNlcnRpZmljYXRlQnl0ZXMuZGF0YSgp
IGxlbmd0aDpjZXJ0aWZpY2F0ZUJ5dGVzLnNpemUoKV0pKTsKK30KKworUmV0YWluUHRyPFNlY0lk
ZW50aXR5UmVmPiB0ZXN0SWRlbnRpdHkoKQorewogICAgIGF1dG8gcHJpdmF0ZUtleUJ5dGVzID0g
VGVzdFdlYktpdEFQSTo6VENQU2VydmVyOjp0ZXN0UHJpdmF0ZUtleSgpOwogICAgIE5TRGF0YSAq
ZGVyRW5jb2RlZFByaXZhdGVLZXkgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6cHJpdmF0ZUtleUJ5
dGVzLmRhdGEoKSBsZW5ndGg6cHJpdmF0ZUtleUJ5dGVzLnNpemUoKV07CiAgICAgTlNEaWN0aW9u
YXJ5KiBvcHRpb25zID0gQHsKQEAgLTYxLDEwICs2NSwxNSBAQCBzdGF0aWMgUmV0YWluUHRyPE5T
VVJMQ3JlZGVudGlhbD4gY3JlZGVuCiAgICAgRVhQRUNUX05VTEwoZXJyb3IpOwogICAgIEVYUEVD
VF9OT1RfTlVMTChwcml2YXRlS2V5LmdldCgpKTsKIAotICAgIGF1dG8gaWRlbnRpdHkgPSBhZG9w
dENGKFNlY0lkZW50aXR5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGNlcnRpZmljYXRlLmdl
dCgpLCBwcml2YXRlS2V5LmdldCgpKSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoU2VjSWRlbnRpdHlD
cmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdGVzdENlcnRpZmljYXRlKCkuZ2V0KCksIHByaXZh
dGVLZXkuZ2V0KCkpKTsKK30KKworc3RhdGljIFJldGFpblB0cjxOU1VSTENyZWRlbnRpYWw+IGNy
ZWRlbnRpYWxXaXRoSWRlbnRpdHkoKQoreworICAgIGF1dG8gaWRlbnRpdHkgPSB0ZXN0SWRlbnRp
dHkoKTsKICAgICBFWFBFQ1RfTk9UX05VTEwoaWRlbnRpdHkpOwogICAgIAotICAgIHJldHVybiBb
TlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxXaXRoSWRlbnRpdHk6aWRlbnRpdHkuZ2V0KCkgY2Vy
dGlmaWNhdGVzOkBbKGlkKWNlcnRpZmljYXRlLmdldCgpXSBwZXJzaXN0ZW5jZTpOU1VSTENyZWRl
bnRpYWxQZXJzaXN0ZW5jZU5vbmVdOworICAgIHJldHVybiBbTlNVUkxDcmVkZW50aWFsIGNyZWRl
bnRpYWxXaXRoSWRlbnRpdHk6aWRlbnRpdHkuZ2V0KCkgY2VydGlmaWNhdGVzOkBbKGlkKXRlc3RD
ZXJ0aWZpY2F0ZSgpLmdldCgpXSBwZXJzaXN0ZW5jZTpOU1VSTENyZWRlbnRpYWxQZXJzaXN0ZW5j
ZU5vbmVdOwogfQogCiBAaW50ZXJmYWNlIENoYWxsZW5nZURlbGVnYXRlIDogTlNPYmplY3QgPFdL
TmF2aWdhdGlvbkRlbGVnYXRlPgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9UTFNEZXByZWNhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1RMU0RlcHJlY2F0aW9uLm1tCShyZXZpc2lvbiAyNTU3Nzcp
CisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RMU0RlcHJlY2F0aW9u
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBIQVZFKFNTTCkKIAor
I2ltcG9ydCAiSFRUUFNlcnZlci5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNp
bXBvcnQgIlRDUFNlcnZlci5oIgogI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgpA
QCAtMzcsMTMgKzM4LDE0IEBACiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CiAjaW1wb3J0IDxX
ZWJLaXQvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5o
PgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPFdlYktpdC9XZWJVSUtpdFN1
cHBvcnQuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJDb3JlVGhyZWFkLmg+CiAjZW5kaWYKIAotI2lm
IEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkKKyNpZiBIQVZFKFRMU19QUk9UT0NPTF9WRVJT
SU9OX1QpIHx8IEhBVkUoTkVUV09SS19GUkFNRVdPUkspCiBAaW50ZXJmYWNlIFRMU09ic2VydmVy
IDogTlNPYmplY3QKIC0gKHZvaWQpd2FpdFVudGlsTmVnb3RpYXRlZExlZ2FjeVRMU0NoYW5nZWQ7
CiBAZW5kCkBAIC0yMjgsMTMgKzIzMCw5IEBAIFRFU1QoVExTVmVyc2lvbiwgRElTQUJMRURfTmF2
aWdhdGlvbkRlbGUKIH0KIAogI2lmIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkKLVRFU1Qo
VExTVmVyc2lvbiwgTmVnb3RpYXRlZExlZ2FjeVRMUykKLXsKLSAgICBUQ1BTZXJ2ZXIgc2VydmVy
KFRDUFNlcnZlcjo6UHJvdG9jb2w6OkhUVFBTLCBbXSAoU1NMICpzc2wpIHsKLSAgICAgICAgVENQ
U2VydmVyOjpyZXNwb25kV2l0aE9LKHNzbCk7Ci0gICAgICAgIFRDUFNlcnZlcjo6cmVzcG9uZFdp
dGhPSyhzc2wpOwotICAgIH0sIHRsczFfMSk7CiAKK3N0YXRpYyBzdGQ6OnBhaXI8UmV0YWluUHRy
PFdLV2ViVmlldz4sIFJldGFpblB0cjxUZXN0TmF2aWdhdGlvbkRlbGVnYXRlPj4gd2ViVmlld1dp
dGhOYXZpZ2F0aW9uRGVsZWdhdGUoKQorewogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtU
ZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1dLV2ViVmlldyBuZXddKTsKICAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVs
ZWdhdGUuZ2V0KCldOwpAQCAtMjQyLDYgKzI0MCwyMCBAQCBURVNUKFRMU1ZlcnNpb24sIE5lZ290
aWF0ZWRMZWdhY3lUTFMpCiAgICAgICAgIEVYUEVDVF9XS19TVFJFUShjaGFsbGVuZ2UucHJvdGVj
dGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kLCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9k
U2VydmVyVHJ1c3QpOwogICAgICAgICBjYWxsYmFjayhOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdl
VXNlQ3JlZGVudGlhbCwgW05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxl
bmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdF0pOwogICAgIH1dOworICAgIHJldHVybiB7
IHdlYlZpZXcsIGRlbGVnYXRlIH07Cit9CisKKyNlbmRpZiAvLyBIQVZFKFRMU19QUk9UT0NPTF9W
RVJTSU9OX1QpIHx8IEhBVkUoTkVUV09SS19GUkFNRVdPUkspCisKKyNpZiBIQVZFKFRMU19QUk9U
T0NPTF9WRVJTSU9OX1QpCisKK1RFU1QoVExTVmVyc2lvbiwgTmVnb3RpYXRlZExlZ2FjeVRMUykK
K3sKKyAgICBIVFRQU2VydmVyIHNlcnZlcih7CisgICAgICAgIHsgIi8iLCB7ICJoZWxsbyIgfSB9
CisgICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzV2l0aExlZ2FjeVRMUyk7CisKKyAg
ICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSB3ZWJWaWV3V2l0aE5hdmlnYXRpb25EZWxlZ2F0
ZSgpOwogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdp
dGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJo
dHRwczovLzEyNy4wLjAuMTolZC8iLCBzZXJ2ZXIucG9ydCgpXV1dOwogICAgIFt3ZWJWaWV3IGxv
YWRSZXF1ZXN0OnJlcXVlc3RdOwogCkBAIC0yNjIsNyArMjc0LDY0IEBAIFRFU1QoVExTVmVyc2lv
biwgTmVnb3RpYXRlZExlZ2FjeVRMUykKIAogICAgIFt3ZWJWaWV3IHJlbW92ZU9ic2VydmVyOm9i
c2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJfbmVnb3RpYXRlZExlZ2FjeVRMUyJdOwogfQotI2Vu
ZGlmCisKKyNlbmRpZiAvLyBIQVZFKFRMU19QUk9UT0NPTF9WRVJTSU9OX1QpCisKKyNpZiBIQVZF
KE5FVFdPUktfRlJBTUVXT1JLKSAmJiBIQVZFKFRMU19QUk9UT0NPTF9WRVJTSU9OX1QpCisKK1RF
U1QoVExTVmVyc2lvbiwgTmF2aWdhdGVCYWNrKQoreworICAgIEhUVFBTZXJ2ZXIgbGVnYWN5VExT
U2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsgImhlbGxvIiB9IH0KKyAgICB9LCBIVFRQU2VydmVy
OjpQcm90b2NvbDo6SHR0cHNXaXRoTGVnYWN5VExTKTsKKworICAgIEhUVFBTZXJ2ZXIgbW9kZXJu
VExTU2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsgImhlbGxvIiB9IH0KKyAgICB9LCBIVFRQU2Vy
dmVyOjpQcm90b2NvbDo6SHR0cHMpOworICAgIAorICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRl
XSA9IHdlYlZpZXdXaXRoTmF2aWdhdGlvbkRlbGVnYXRlKCk7CisgICAgYXV0byBvYnNlcnZlciA9
IGFkb3B0TlMoW1RMU09ic2VydmVyIG5ld10pOworICAgIFt3ZWJWaWV3IGFkZE9ic2VydmVyOm9i
c2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJfbmVnb3RpYXRlZExlZ2FjeVRMUyIgb3B0aW9uczpO
U0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6bmlsXTsKKworICAgIFt3ZWJWaWV3
IGxvYWRSZXF1ZXN0OmxlZ2FjeVRMU1NlcnZlci5yZXF1ZXN0KCldOworICAgIEVYUEVDVF9GQUxT
RShbd2ViVmlldyBfbmVnb3RpYXRlZExlZ2FjeVRMU10pOworICAgIFtkZWxlZ2F0ZSB3YWl0Rm9y
RGlkRmluaXNoTmF2aWdhdGlvbl07CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgX25lZ290aWF0
ZWRMZWdhY3lUTFNdKTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0Om1vZGVyblRMU1NlcnZl
ci5yZXF1ZXN0KCldOworICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07
CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IF9uZWdvdGlhdGVkTGVnYWN5VExTXSk7CisKKyAg
ICBbd2ViVmlldyBnb0JhY2tdOworICAgIFtvYnNlcnZlciB3YWl0VW50aWxOZWdvdGlhdGVkTGVn
YWN5VExTQ2hhbmdlZF07CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgX25lZ290aWF0ZWRMZWdh
Y3lUTFNdKTsKKworICAgIFt3ZWJWaWV3IHJlbW92ZU9ic2VydmVyOm9ic2VydmVyLmdldCgpIGZv
cktleVBhdGg6QCJfbmVnb3RpYXRlZExlZ2FjeVRMUyJdOworfQorCitURVNUKFRMU1ZlcnNpb24s
IFN1YnJlc291cmNlKQoreworICAgIEhUVFBTZXJ2ZXIgbGVnYWN5VExTU2VydmVyKHsKKyAgICAg
ICAgeyAiLyIsIHsgImhlbGxvIiB9IH0KKyAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0
cHNXaXRoTGVnYWN5VExTKTsKKworICAgIEhUVFBTZXJ2ZXIgbW9kZXJuVExTU2VydmVyKHsKKyAg
ICAgICAgeyAiLyIsIHsgbWFrZVN0cmluZygiPHNjcmlwdD5mZXRjaCgnaHR0cHM6Ly8xMjcuMC4w
LjE6Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlZ2FjeVRMU1NlcnZlci5wb3J0KCkpLCAiLycs
e21vZGU6J25vLWNvcnMnfSk8L3NjcmlwdD4iKSB9IH0KKyAgICB9LCBIVFRQU2VydmVyOjpQcm90
b2NvbDo6SHR0cHMpOworICAgIAorICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHdlYlZp
ZXdXaXRoTmF2aWdhdGlvbkRlbGVnYXRlKCk7CisgICAgYXV0byBvYnNlcnZlciA9IGFkb3B0TlMo
W1RMU09ic2VydmVyIG5ld10pOworICAgIFt3ZWJWaWV3IGFkZE9ic2VydmVyOm9ic2VydmVyLmdl
dCgpIGZvcktleVBhdGg6QCJfbmVnb3RpYXRlZExlZ2FjeVRMUyIgb3B0aW9uczpOU0tleVZhbHVl
T2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6bmlsXTsKKworICAgIEVYUEVDVF9GQUxTRShbd2Vi
VmlldyBfbmVnb3RpYXRlZExlZ2FjeVRMU10pOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0Om1v
ZGVyblRMU1NlcnZlci5yZXF1ZXN0KCldOworICAgIHdoaWxlICghW3dlYlZpZXcgX25lZ290aWF0
ZWRMZWdhY3lUTFNdKQorICAgICAgICBbb2JzZXJ2ZXIgd2FpdFVudGlsTmVnb3RpYXRlZExlZ2Fj
eVRMU0NoYW5nZWRdOworCisgICAgW3dlYlZpZXcgcmVtb3ZlT2JzZXJ2ZXI6b2JzZXJ2ZXIuZ2V0
KCkgZm9yS2V5UGF0aDpAIl9uZWdvdGlhdGVkTGVnYWN5VExTIl07Cit9CisKKyNlbmRpZiAvLyBI
QVZFKE5FVFdPUktfRlJBTUVXT1JLKSAmJiBIQVZFKFRMU19QUk9UT0NPTF9WRVJTSU9OX1QpCiAK
IC8vIEZJWE1FOiBBZGQgc29tZSB0ZXN0cyBmb3IgV0tXZWJWaWV3Lmhhc09ubHlTZWN1cmVDb250
ZW50CiAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5oCShyZXZpc2lv
biAyNTU3NzcpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMzgsNyArMzgsOCBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiBj
bGFzcyBIVFRQU2VydmVyIHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgSFRUUFJlc3BvbnNlOwotICAg
IEhUVFBTZXJ2ZXIoc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxTdHJpbmcsIEhUVFBS
ZXNwb25zZT4+KTsKKyAgICBlbnVtIGNsYXNzIFByb3RvY29sIDogdWludDhfdCB7IEh0dHAsIEh0
dHBzLCBIdHRwc1dpdGhMZWdhY3lUTFMgfTsKKyAgICBIVFRQU2VydmVyKHN0ZDo6aW5pdGlhbGl6
ZXJfbGlzdDxzdGQ6OnBhaXI8U3RyaW5nLCBIVFRQUmVzcG9uc2U+PiwgUHJvdG9jb2wgPSBQcm90
b2NvbDo6SHR0cCk7CiAgICAgdWludDE2X3QgcG9ydCgpIGNvbnN0OwogICAgIE5TVVJMUmVxdWVz
dCAqcmVxdWVzdCgpIGNvbnN0OwogICAgIApAQCAtNDYsNiArNDcsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgcmVzcG9uZFRvUmVxdWVzdHMobndfY29ubmVjdGlvbl90KTsKICAgICAKICAgICBSZXRh
aW5QdHI8bndfbGlzdGVuZXJfdD4gbV9saXN0ZW5lcjsKKyAgICBjb25zdCBQcm90b2NvbCBtX3By
b3RvY29sOwogICAgIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBIVFRQUmVzcG9uc2U+IG1fcmVxdWVz
dFJlc3BvbnNlTWFwOwogfTsKIApAQCAtNzQsMyArNzYsNSBAQCBzdHJ1Y3QgSFRUUFNlcnZlcjo6
SFRUUFJlc3BvbnNlIHsKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKIAogI2VuZGlmIC8v
IEhBVkUoTkVUV09SS19GUkFNRVdPUkspCisKK1JldGFpblB0cjxTZWNJZGVudGl0eVJlZj4gdGVz
dElkZW50aXR5KCk7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1t
CShyZXZpc2lvbiAyNTU3NzcpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2
ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzLDE1ICszMywyOCBAQAogCiBuYW1lc3BhY2UgVGVz
dFdlYktpdEFQSSB7CiAKLUhUVFBTZXJ2ZXI6OkhUVFBTZXJ2ZXIoc3RkOjppbml0aWFsaXplcl9s
aXN0PHN0ZDo6cGFpcjxTdHJpbmcsIEhUVFBSZXNwb25zZT4+IHJlc3BvbnNlcykKLSAgICA6IG1f
cmVxdWVzdFJlc3BvbnNlTWFwKFtdKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8U3Ry
aW5nLCBIVFRQU2VydmVyOjpIVFRQUmVzcG9uc2U+PiBsaXN0KSB7CitIVFRQU2VydmVyOjpIVFRQ
U2VydmVyKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8U3RyaW5nLCBIVFRQUmVzcG9u
c2U+PiByZXNwb25zZXMsIFByb3RvY29sIHByb3RvY29sKQorICAgIDogbV9wcm90b2NvbChwcm90
b2NvbCkKKyAgICAsIG1fcmVxdWVzdFJlc3BvbnNlTWFwKFtdKHN0ZDo6aW5pdGlhbGl6ZXJfbGlz
dDxzdGQ6OnBhaXI8U3RyaW5nLCBIVFRQU2VydmVyOjpIVFRQUmVzcG9uc2U+PiBsaXN0KSB7CiAg
ICAgICAgIEhhc2hNYXA8U3RyaW5nLCBIVFRQU2VydmVyOjpIVFRQUmVzcG9uc2U+IG1hcDsKICAg
ICAgICAgZm9yIChhdXRvJiBwYWlyIDogbGlzdCkKICAgICAgICAgICAgIG1hcC5hZGQocGFpci5m
aXJzdCwgcGFpci5zZWNvbmQpOwogICAgICAgICByZXR1cm4gbWFwOwogICAgIH0ocmVzcG9uc2Vz
KSkKIHsKLSAgICBhdXRvIHBhcmFtZXRlcnMgPSBhZG9wdE5TKG53X3BhcmFtZXRlcnNfY3JlYXRl
X3NlY3VyZV90Y3AoTldfUEFSQU1FVEVSU19ESVNBQkxFX1BST1RPQ09MLCBOV19QQVJBTUVURVJT
X0RFRkFVTFRfQ09ORklHVVJBVElPTikpOworICAgIGF1dG8gY29uZmlndXJlVExTID0gcHJvdG9j
b2wgPT0gUHJvdG9jb2w6Okh0dHAgPyBOV19QQVJBTUVURVJTX0RJU0FCTEVfUFJPVE9DT0wgOiBe
KG53X3Byb3RvY29sX29wdGlvbnNfdCBwcm90b2NvbE9wdGlvbnMpIHsKKyNpZiBIQVZFKFRMU19Q
Uk9UT0NPTF9WRVJTSU9OX1QpCisgICAgICAgIGF1dG8gb3B0aW9ucyA9IGFkb3B0TlMobndfdGxz
X2NvcHlfc2VjX3Byb3RvY29sX29wdGlvbnMocHJvdG9jb2xPcHRpb25zKSk7CisgICAgICAgIGF1
dG8gaWRlbnRpdHkgPSBhZG9wdE5TKHNlY19pZGVudGl0eV9jcmVhdGUodGVzdElkZW50aXR5KCku
Z2V0KCkpKTsKKyAgICAgICAgc2VjX3Byb3RvY29sX29wdGlvbnNfc2V0X2xvY2FsX2lkZW50aXR5
KG9wdGlvbnMuZ2V0KCksIGlkZW50aXR5LmdldCgpKTsKKyAgICAgICAgaWYgKHByb3RvY29sID09
IFByb3RvY29sOjpIdHRwc1dpdGhMZWdhY3lUTFMpCisgICAgICAgICAgICBzZWNfcHJvdG9jb2xf
b3B0aW9uc19zZXRfbWF4X3Rsc19wcm90b2NvbF92ZXJzaW9uKG9wdGlvbnMuZ2V0KCksIHRsc19w
cm90b2NvbF92ZXJzaW9uX1RMU3YxMCk7CisjZWxzZQorICAgICAgICBVTlVTRURfUEFSQU0ocHJv
dG9jb2xPcHRpb25zKTsKKyAgICAgICAgQVNTRVJUKHByb3RvY29sICE9IFByb3RvY29sOjpIdHRw
c1dpdGhMZWdhY3lUTFMpOworI2VuZGlmCisgICAgfTsKKyAgICBhdXRvIHBhcmFtZXRlcnMgPSBh
ZG9wdE5TKG53X3BhcmFtZXRlcnNfY3JlYXRlX3NlY3VyZV90Y3AoY29uZmlndXJlVExTLCBOV19Q
QVJBTUVURVJTX0RFRkFVTFRfQ09ORklHVVJBVElPTikpOwogICAgIG1fbGlzdGVuZXIgPSBhZG9w
dE5TKG53X2xpc3RlbmVyX2NyZWF0ZShwYXJhbWV0ZXJzLmdldCgpKSk7CiAgICAgbndfbGlzdGVu
ZXJfc2V0X3F1ZXVlKG1fbGlzdGVuZXIuZ2V0KCksIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkp
OwogICAgIG53X2xpc3RlbmVyX3NldF9uZXdfY29ubmVjdGlvbl9oYW5kbGVyKG1fbGlzdGVuZXIu
Z2V0KCksIF4obndfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24pIHsKQEAgLTEyNyw3ICsxNDAsMTcg
QEAgdWludDE2X3QgSFRUUFNlcnZlcjo6cG9ydCgpIGNvbnN0CiAKIE5TVVJMUmVxdWVzdCAqSFRU
UFNlcnZlcjo6cmVxdWVzdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFtOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCJodHRwOi8vMTI3LjAuMC4xOiVkLyIsIHBvcnQoKV1dXTsKKyAgICBOU1N0cmluZyAqZm9y
bWF0OworICAgIHN3aXRjaCAobV9wcm90b2NvbCkgeworICAgIGNhc2UgUHJvdG9jb2w6Okh0dHA6
CisgICAgICAgIGZvcm1hdCA9IEAiaHR0cDovLzEyNy4wLjAuMTolZC8iOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFByb3RvY29sOjpIdHRwczoKKyAgICBjYXNlIFByb3RvY29sOjpIdHRwc1dp
dGhMZWdhY3lUTFM6CisgICAgICAgIGZvcm1hdCA9IEAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIjsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RX
aXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OmZv
cm1hdCwgcG9ydCgpXV1dOwogfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389756</attachid>
            <date>2020-02-04 18:00:32 -0800</date>
            <delta_ts>2020-02-05 11:42:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207207-20200204180031.patch</filename>
            <type>text/plain</type>
            <size>58057</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNTU3NzcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDIwLTAyLTA0ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBXS1dlYlZpZXcuX25lZ290
aWF0ZWRMZWdhY3lUTFMgYWNjdXJhdGUgd2hlbiBsb2FkaW5nIG1haW4gcmVzb3VvcmNlIGZyb20g
bmV0d29yayBvciBjYWNoZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA3MjA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiB3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuY3BwOgorICAgICAg
ICAoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAgKiB3dGYvcGVy
c2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaDoKKyAgICAgICAgKiB3dGYvcGVyc2lzdGVuY2Uv
UGVyc2lzdGVudEVuY29kZXIuY3BwOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rl
cjo6ZW5jb2RlKToKKyAgICAgICAgKiB3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIu
aDoKKwogMjAyMC0wMi0wNCAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIE5vbi11bmlmaWVkIGJ1aWxkIGZpeGVzIGVhcmx5IEZlYnJ1YXJ5IDIw
MjAgZWRpdGlvbgpJbmRleDogU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERl
Y29kZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNp
c3RlbnREZWNvZGVyLmNwcAkocmV2aXNpb24gMjU1Nzc3KQorKysgU291cmNlL1dURi93dGYvcGVy
c2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw2ICs4
NywxMSBAQCBib29sIERlY29kZXI6OmRlY29kZSh1aW50MTZfdCYgcmVzdWx0KQogICAgIHJldHVy
biBkZWNvZGVOdW1iZXIocmVzdWx0KTsKIH0KIAorYm9vbCBEZWNvZGVyOjpkZWNvZGUoaW50MTZf
dCYgcmVzdWx0KQoreworICAgIHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0KTsKK30KKwogYm9v
bCBEZWNvZGVyOjpkZWNvZGUodWludDMyX3QmIHJlc3VsdCkKIHsKICAgICByZXR1cm4gZGVjb2Rl
TnVtYmVyKHJlc3VsdCk7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0
ZW50RGVjb2Rlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1Bl
cnNpc3RlbnREZWNvZGVyLmgJKHJldmlzaW9uIDI1NTc3NykKKysrIFNvdXJjZS9XVEYvd3RmL3Bl
cnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUw
LDcgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGRlY29kZSh1aW50MTZf
dCYpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGRlY29kZSh1aW50MzJfdCYpOwogICAg
IFdURl9FWFBPUlRfUFJJVkFURSBib29sIGRlY29kZSh1aW50NjRfdCYpOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSBib29sIGRlY29kZShpbnQxNl90Jik7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IGJvb2wgZGVjb2RlKGludDMyX3QmKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBkZWNv
ZGUoaW50NjRfdCYpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGRlY29kZShmbG9hdCYp
OwpJbmRleDogU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNv
ZGVyLmNwcAkocmV2aXNpb24gMjU1Nzc3KQorKysgU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2Uv
UGVyc2lzdGVudEVuY29kZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw2ICs4NSwxMSBAQCB2
b2lkIEVuY29kZXI6OmVuY29kZSh1aW50MTZfdCB2YWx1ZSkKICAgICBlbmNvZGVOdW1iZXIodmFs
dWUpOwogfQogCit2b2lkIEVuY29kZXI6OmVuY29kZShpbnQxNl90IHZhbHVlKQoreworICAgIGVu
Y29kZU51bWJlcih2YWx1ZSk7Cit9CisKIHZvaWQgRW5jb2Rlcjo6ZW5jb2RlKHVpbnQzMl90IHZh
bHVlKQogewogICAgIGVuY29kZU51bWJlcih2YWx1ZSk7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9w
ZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmgJKHJldmlzaW9uIDI1NTc3NykKKysr
IFNvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTg1LDYgKzg1LDcgQEAgcHJpdmF0ZToKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
dm9pZCBlbmNvZGUodWludDE2X3QpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGVuY29k
ZSh1aW50MzJfdCk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZW5jb2RlKHVpbnQ2NF90
KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBlbmNvZGUoaW50MTZfdCk7CiAgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHZvaWQgZW5jb2RlKGludDMyX3QpOwogICAgIFdURl9FWFBPUlRfUFJJ
VkFURSB2b2lkIGVuY29kZShpbnQ2NF90KTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBl
bmNvZGUoZmxvYXQpOwpAQCAtMTEwLDYgKzExMSw3IEBAIHRlbXBsYXRlIDw+IHN0cnVjdCBFbmNv
ZGVyOjpTYWx0PGludDY0X3QKIHRlbXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PGZsb2F0
PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAyMzsgfTsKIHRlbXBsYXRlIDw+
IHN0cnVjdCBFbmNvZGVyOjpTYWx0PGRvdWJsZT4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IHZhbHVlID0gMjk7IH07CiB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDx1aW50OF90
Kj4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMTAxOyB9OwordGVtcGxhdGUg
PD4gc3RydWN0IEVuY29kZXI6OlNhbHQ8aW50MTZfdD4geyBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIHZhbHVlID0gMTAzOyB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZT4KIHZvaWQgRW5j
b2Rlcjo6dXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIoU0hBMSYgc2hhMSwgVHlwZSB2YWx1ZSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NTc3OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDIwLTAyLTA0ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBXS1dlYlZp
ZXcuX25lZ290aWF0ZWRMZWdhY3lUTFMgYWNjdXJhdGUgd2hlbiBsb2FkaW5nIG1haW4gcmVzb3Vv
cmNlIGZyb20gbmV0d29yayBvciBjYWNoZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA3MjA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjppbmNsdWRlQ2Vy
dGlmaWNhdGVJbmZvIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVzcG9uc2VCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6
dXNlZExlZ2FjeVRMUyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
QmFzZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VC
YXNlOjpkZWNvZGUpOgorCiAyMDIwLTAyLTA0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IGludGVybmFsIGJ1aWxkIGFmdGVyIHIyNTU3
MDkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25z
ZUJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCShyZXZpc2lvbiAyNTU3NzcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjYxLDExICsyNjEsMTIgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0
VHlwZShUeXBlIAogICAgIG1fdHlwZSA9IHR5cGU7CiB9CiAKLXZvaWQgUmVzb3VyY2VSZXNwb25z
ZUJhc2U6OmluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8oKSBjb25zdAordm9pZCBSZXNvdXJjZVJlc3Bv
bnNlQmFzZTo6aW5jbHVkZUNlcnRpZmljYXRlSW5mbyhVc2VkTGVnYWN5VExTIHVzZWRMZWdhY3lU
TFMpIGNvbnN0CiB7CiAgICAgaWYgKG1fY2VydGlmaWNhdGVJbmZvKQogICAgICAgICByZXR1cm47
CiAgICAgbV9jZXJ0aWZpY2F0ZUluZm8gPSBzdGF0aWNfY2FzdDxjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlKj4odGhpcyktPnBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKCk7CisgICAgbV91c2VkTGVnYWN5
VExTID0gdXNlZExlZ2FjeVRMUzsKIH0KIAogU3RyaW5nIFJlc291cmNlUmVzcG9uc2VCYXNlOjpz
dWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCShyZXZpc2lvbiAyNTU3
NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VC
YXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDggQEAgY2xhc3MgUmVzb3VyY2VSZXNw
b25zZTsKIAogYm9vbCBpc1NjcmlwdEFsbG93ZWRCeU5vc25pZmYoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOwogCitlbnVtIGNsYXNzIFVzZWRMZWdhY3lUTFMgOiBib29sIHsgTm8sIFllcyB9Owor
CiAvLyBEbyBub3QgdXNlIHRoaXMgY2xhc3MgZGlyZWN0bHksIHVzZSB0aGUgY2xhc3MgUmVzb3Vy
Y2VSZXNwb25zZSBpbnN0ZWFkCiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlQmFzZSB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0xMjcsOCArMTI5LDkgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0OwogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBT
dHJpbmcmKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5jbHVkZUNlcnRpZmljYXRlSW5m
bygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5jbHVkZUNlcnRpZmljYXRlSW5m
byhVc2VkTGVnYWN5VExTID0gVXNlZExlZ2FjeVRMUzo6Tm8pIGNvbnN0OwogICAgIGNvbnN0IE9w
dGlvbmFsPENlcnRpZmljYXRlSW5mbz4mIGNlcnRpZmljYXRlSW5mbygpIGNvbnN0IHsgcmV0dXJu
IG1fY2VydGlmaWNhdGVJbmZvOyB9OworICAgIGJvb2wgdXNlZExlZ2FjeVRMUygpIGNvbnN0IHsg
cmV0dXJuIG1fdXNlZExlZ2FjeVRMUyA9PSBVc2VkTGVnYWN5VExTOjpZZXM7IH0KICAgICAKICAg
ICAvLyBUaGVzZSBmdW5jdGlvbnMgcmV0dXJuIHBhcnNlZCB2YWx1ZXMgb2YgdGhlIGNvcnJlc3Bv
bmRpbmcgcmVzcG9uc2UgaGVhZGVycy4KICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNhY2hlQ29u
dHJvbENvbnRhaW5zTm9DYWNoZSgpIGNvbnN0OwpAQCAtMjQ2LDcgKzI0OSw4IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX2lzUmFuZ2VSZXF1ZXN0ZWQgeyBmYWxzZSB9OwogCiBwcm90ZWN0ZWQ6Ci0g
ICAgaW50IG1faHR0cFN0YXR1c0NvZGUgeyAwIH07CisgICAgc2hvcnQgbV9odHRwU3RhdHVzQ29k
ZSB7IDAgfTsKKyAgICBtdXRhYmxlIFVzZWRMZWdhY3lUTFMgbV91c2VkTGVnYWN5VExTIHsgVXNl
ZExlZ2FjeVRMUzo6Tm8gfTsKIH07CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgYSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYikgeyByZXR1cm4gUmVz
b3VyY2VSZXNwb25zZUJhc2U6OmNvbXBhcmUoYSwgYik7IH0KQEAgLTI3OSw2ICsyODMsNyBAQCB2
b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjplbmNvZGUoRW5jb2RlCiAgICAgZW5jb2Rlci5lbmNv
ZGVFbnVtKG1fdHlwZSk7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKG1fdGFpbnRpbmcpOwogICAg
IGVuY29kZXIgPDwgbV9pc1JlZGlyZWN0ZWQ7CisgICAgZW5jb2RlciA8PCBtX3VzZWRMZWdhY3lU
TFM7CiAgICAgZW5jb2RlciA8PCBtX2lzUmFuZ2VSZXF1ZXN0ZWQ7CiB9CiAKQEAgLTMyNyw3ICsz
MzIsOCBAQCBib29sIFJlc291cmNlUmVzcG9uc2VCYXNlOjpkZWNvZGUoRGVjb2RlCiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShpc1JlZGlyZWN0ZWQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgcmVzcG9uc2UubV9pc1JlZGlyZWN0ZWQgPSBpc1JlZGlyZWN0ZWQ7Ci0KKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHJlc3BvbnNlLm1fdXNlZExlZ2FjeVRMUykpCisgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBib29sIGlzUmFuZ2VSZXF1ZXN0ZWQgPSBmYWxzZTsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGlzUmFuZ2VSZXF1ZXN0ZWQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwkocmV2aXNpb24gMjU1Nzc3KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSw2OSBAQAorMjAyMC0wMi0wNCAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1ha2UgV0tXZWJWaWV3Ll9u
ZWdvdGlhdGVkTGVnYWN5VExTIGFjY3VyYXRlIHdoZW4gbG9hZGluZyBtYWluIHJlc291b3JjZSBm
cm9tIG5ldHdvcmsgb3IgY2FjaGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwNzIwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEluIFBhZ2VMb2FkU3RhdGU6OmRpZENvbW1pdExvYWQsIEkgd2FzIHJlc2V0
dGluZyB0aGUgdmFsdWUgb2YgX25lZ290aWF0ZWRMZWdhY3lUTFMgdG8gZmFsc2UuCisgICAgICAg
IFRoYXQgY3JlYXRlZCBhIHJhY2UgY29uZGl0aW9uIHdoZW4gbG9hZGluZyB0aGUgbWFpbiByZXNv
dXJjZSBiZWNhdXNlIHRoZSBOZXR3b3JrUHJvY2VzcyB3b3VsZAorICAgICAgICBtZXNzYWdlIHRo
ZSBVSVByb2Nlc3Mgc2V0dGluZyBfbmVnb3RpYXRlZExlZ2FjeVRMUyB0byBmYWxzZSwgd2hpbGUg
dGhlIE5ldHdvcmtQcm9jZXNzIHdvdWxkCisgICAgICAgIG1lc3NhZ2UgdGhlIFdlYlByb2Nlc3Mg
d2hpY2ggd291bGQgbWVzc2FnZSB0aGUgVUlQcm9jZXNzIHRvIGNhbGwgUGFnZUxvYWRTdGF0ZTo6
ZGlkQ29tbWl0TG9hZAorICAgICAgICB3aGljaCB3b3VsZCByZXNldCBpdCB0byBmYWxzZS4gIE5v
dyBpdCByZXNldHMgaXQgdG8gdGhlIGNvcnJlY3QgdmFsdWUsIHdoYXRldmVyIGl0IGlzLgorCisg
ICAgICAgIFVwZGF0aW5nIHRoZSBSZXNvdXJjZVJlc3BvbnNlQmFzZSBzZXJpYWxpemF0aW9uIGNv
ZGUgaGFzIHRoZSBkZXNpcmFibGUgc2lkZSBlZmZlY3QgdGhhdCB0aGUgZGlzaworICAgICAgICBj
YWNoZSB3aWxsIHJlbWVtYmVyIHdoZXRoZXIgbGVnYWN5IFRMUyB3YXMgdXNlZCB0byBmZXRjaCBl
YWNoIHJlc291cmNlLiAgVGhpcyB3aWxsIG1ha2UgaXQgc28KKyAgICAgICAgX25lZ290aWF0ZWRM
ZWdhY3lUTFMgaXMgdHJ1ZSBpZiB3ZSByZWFkIGNvbnRlbnQgZnJvbSB0aGUgZGlzayBjYWNoZSB0
aGF0IHdhcyBvcmlnaW5hbGx5IGZldGNoZWQKKyAgICAgICAgdXNpbmcgbGVnYWN5IFRMUy4KKwor
ICAgICAgICBJbiBvcmRlciB0byBub3QgaW5jcmVhc2UgdGhlIG1lbW9yeSBmb290cHJpbnQgb2Yg
UmVzb3VyY2VSZXNwb25zZSwgSSBjaGFuZ2VkIG1faHR0cFN0YXR1c0NvZGUgZnJvbQorICAgICAg
ICBhbiBpbnQgdG8gYSBzaG9ydC4gIEl0IGp1c3QgbmVlZHMgdG8gYmUgYWJsZSB0byBjb3ZlciB0
aGUgdmFsdWVzIDAtNjAwIG9yIHNvLCB3aGljaCByZWFsbHkgb25seSBuZWVkcyAxMCBiaXRzLgor
CisgICAgICAgIENvdmVyZWQgYnkgbmV3IEFQSSB0ZXN0cy4KKworICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtEYXRhVGFzazo6bmVnb3RpYXRlZExlZ2FjeVRMUyBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmg6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtEYXRhVGFza0NsaWVudDo6bmVnb3RpYXRlZExlZ2FjeVRMUyBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0Jsb2I6OmRpc3BhdGNoRGlkUmVjZWl2
ZVJlc3BvbnNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6bm90aWZ5RGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OnRocm90dGxlRGVsYXlDb21wbGV0ZWQpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6bmVnb3RpYXRlZExlZ2FjeVRMUyBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9QaW5nTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBpbmdMb2FkOjpkaWRSZWNl
aXZlUmVzcG9uc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVSZXNwb25zZSk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAg
ICAgICAgKC1bV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlk
UmVjZWl2ZVJlc3BvbnNlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtEYXRhVGFza0N1cmw6Omludm9rZURpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UGFnZUxvYWRTdGF0ZTo6ZGlkQ29tbWl0TG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VM
b2FkU3RhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZv
ckZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5Ojpjb21taXRQcm92aXNpb25hbFBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERpZENvbW1pdExvYWQpOgorCiAyMDIwLTAyLTA0ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0
b25AYXBwbGUuY29tPgogCiAgICAgICAgIG1hY0NhdGFseXN0OiBTaG91bGRuJ3QgZ2V0IHRleHQg
Y3Vyc29yIG9uIGNoZWNrYm94ZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAJKHJldmlz
aW9uIDI1NTc3NykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQ
cmVmbGlnaHRDaGVja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHZv
aWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWMKICAgICBtX25ldHdvcmtQcm9j
ZXNzLT5hdXRoZW50aWNhdGlvbk1hbmFnZXIoKS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UobV9wYXJhbWV0ZXJzLnNlc3Npb25JRCwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlE
LCBtX3BhcmFtZXRlcnMudG9wT3JpZ2luID8gJm1fcGFyYW1ldGVycy50b3BPcmlnaW4tPmRhdGEo
KSA6IG51bGxwdHIsIGNoYWxsZW5nZSwgbmVnb3RpYXRlZExlZ2FjeVRMUywgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwg
UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3
b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2UiKTsKIApJbmRleDogU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tl
ci5oCShyZXZpc2lvbiAyNTU3NzcpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlv
bihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2
ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVk
TGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNl
Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25z
ZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdp
dGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0
d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0
b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFz
ay5jcHAJKHJldmlzaW9uIDI1NTc3NykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0RhdGFUYXNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcsNyArOTcsNyBAQCB2b2lk
IE5ldHdvcmtEYXRhVGFzazo6c2NoZWR1bGVGYWlsdXJlKEZhCiAgICAgbV9mYWlsdXJlVGltZXIu
c3RhcnRPbmVTaG90KDBfcyk7CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZl
UmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNwb25zZUNvbXBsZXRpb25I
YW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtEYXRhVGFzazo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgTmVnb3RpYXRlZExlZ2Fj
eVRMUyBuZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKHJlc3BvbnNlLmlzSFRUUDA5KCkpIHsKICAgICAg
ICAgYXV0byB1cmwgPSByZXNwb25zZS51cmwoKTsKQEAgLTExMSwxNyArMTExLDExIEBAIHZvaWQg
TmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UKICAgICAgICAgfQogICAgIH0KICAg
ICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoV1RG
TW92ZShyZXNwb25zZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgbV9j
bGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgbmVnb3RpYXRlZExl
Z2FjeVRMUywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIGVsc2UKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUpOwogfQogCi12b2lkIE5ldHdv
cmtEYXRhVGFzazo6bmVnb3RpYXRlZExlZ2FjeVRMUygpIGNvbnN0Ci17Ci0gICAgaWYgKG1fY2xp
ZW50KQotICAgICAgICBtX2NsaWVudC0+bmVnb3RpYXRlZExlZ2FjeVRMUygpOwotfQotCiBib29s
IE5ldHdvcmtEYXRhVGFzazo6c2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbV9jbGllbnQgPyBtX2NsaWVudC0+c2hvdWxkQ2FwdHVyZUV4
dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkgOiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAkocmV2aXNpb24gMjU1Nzc3KQorKysg
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAkod29ya2luZyBj
b3B5KQpAQCAtNjIsNyArNjIsNyBAQCBjbGFzcyBOZXR3b3JrRGF0YVRhc2tDbGllbnQgewogcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVj
dENvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNo
YWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVn
YWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3Bv
bnNlQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExT
LCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxC
eXRlc0V4cGVjdGVkVG9TZW5kKSA9IDA7CkBAIC03MCw3ICs3MCw2IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgY2Fubm90U2hvd1VSTCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2FzQmxv
Y2tlZEJ5UmVzdHJpY3Rpb25zKCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIG5lZ290aWF0ZWRM
ZWdhY3lUTFMoKSBjb25zdCB7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJh
TmV0d29ya0xvYWRNZXRyaWNzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZvaWQg
ZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3Ip
CkBAIC05Miw4ICs5MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlQW5kQ2FuY2VsKCkgPSAwOwogCi0gICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25z
ZUNvbXBsZXRpb25IYW5kbGVyJiYpOwotICAgIHZvaWQgbmVnb3RpYXRlZExlZ2FjeVRMUygpIGNv
bnN0OworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKTsK
ICAgICBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcygpIGNvbnN0Owog
CiAgICAgZW51bSBjbGFzcyBTdGF0ZSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAJKHJldmlzaW9uIDI1NTc3NykK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI5MCw3ICsyOTAsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0Js
b2I6OmRpc3BhdGNoRGlkUmVjCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGRpZFJlY2Vp
dmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZN
b3ZlKHByb3RlY3RlZFRoaXMpLCBlcnJvckNvZGVdKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24p
IHsKKyAgICBkaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSksIE5lZ290aWF0ZWRM
ZWdhY3lUTFM6Ok5vLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhp
cyksIGVycm9yQ29kZV0oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgewogICAgICAgICBMT0co
TmV0d29ya1Nlc3Npb24sICIlcCAtIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRpZFJlY2VpdmVSZXNw
b25zZSBjb21wbGV0aW9uSGFuZGxlciAoJXUpIiwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHBvbGljeUFjdGlvbikpOwogCiAgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDYW5jZWxp
bmcgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6Q29tcGxldGVkKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAkocmV2aXNpb24gMjU1Nzc3KQorKysg
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIwNiwxMiArMjA2LDcgQEAgdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZUNoYWxs
ZW5nZShBdQogICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5hdXRoZW50aWNhdGlvbk1hbmFnZXIo
KS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UobV90YXNrLT5zZXNzaW9uSUQoKSwg
bV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELCBtX3BhcmFtZXRlcnMudG9wT3JpZ2luID8gJm1f
cGFyYW1ldGVycy50b3BPcmlnaW4tPmRhdGEoKSA6IG51bGxwdHIsIGNoYWxsZW5nZSwgbmVnb3Rp
YXRlZExlZ2FjeVRMUywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5l
dHdvcmtMb2FkOjpuZWdvdGlhdGVkTGVnYWN5VExTKCkgY29uc3QKLXsKLSAgICBtX25ldHdvcmtQ
cm9jZXNzLT5hdXRoZW50aWNhdGlvbk1hbmFnZXIoKS5uZWdvdGlhdGVkTGVnYWN5VExTKG1fcGFy
YW1ldGVycy53ZWJQYWdlUHJveHlJRCk7Ci19Ci0KLXZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2Vp
dmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlv
bkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2Vp
dmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0ZWRMZWdhY3lU
TFMgbmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgQVNT
RVJUKCFtX3Rocm90dGxlKTsKQEAgLTIyNiwxNiArMjIxLDE5IEBAIHZvaWQgTmV0d29ya0xvYWQ6
OmRpZFJlY2VpdmVSZXNwb25zZShSZXMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG5v
dGlmeURpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworICAgIGlmIChuZWdvdGlhdGVkTGVnYWN5VExTID09IE5lZ290aWF0ZWRM
ZWdhY3lUTFM6OlllcykKKyAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+YXV0aGVudGljYXRpb25N
YW5hZ2VyKCkubmVnb3RpYXRlZExlZ2FjeVRMUyhtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQp
OworICAgIAorICAgIG5vdGlmeURpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwg
bmVnb3RpYXRlZExlZ2FjeVRMUywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12
b2lkIE5ldHdvcmtMb2FkOjpub3RpZnlEaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25z
ZSYmIHJlc3BvbnNlLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIE5ldHdvcmtMb2FkOjpub3RpZnlEaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VS
ZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVkTGVnYWN5VExTIG5lZ290aWF0ZWRMZWdhY3lU
TFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgcmVzcG9uc2Uuc2V0U291cmNlKFJl
c291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yayk7CiAgICAgaWYgKG1fcGFyYW1ldGVycy5u
ZWVkc0NlcnRpZmljYXRlSW5mbykKLSAgICAgICAgcmVzcG9uc2UuaW5jbHVkZUNlcnRpZmljYXRl
SW5mbygpOworICAgICAgICByZXNwb25zZS5pbmNsdWRlQ2VydGlmaWNhdGVJbmZvKG5lZ290aWF0
ZWRMZWdhY3lUTFMgPT0gTmVnb3RpYXRlZExlZ2FjeVRMUzo6WWVzID8gVXNlZExlZ2FjeVRMUzo6
WWVzIDogVXNlZExlZ2FjeVRMUzo6Tm8pOwogCiAgICAgbV9jbGllbnQuZ2V0KCkuZGlkUmVjZWl2
ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiB9CkBAIC0yNjUsNyArMjYzLDcgQEAgdm9pZCBOZXR3b3JrTG9hZDo6dGhyb3R0bGVEZWxheUNv
bXBsZXRlZAogCiAgICAgYXV0byB0aHJvdHRsZSA9IFdURk1vdmUobV90aHJvdHRsZSk7CiAKLSAg
ICBub3RpZnlEaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZSh0aHJvdHRsZS0+cmVzcG9uc2UpLCBX
VEZNb3ZlKHRocm90dGxlLT5yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgbm90aWZ5
RGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUodGhyb3R0bGUtPnJlc3BvbnNlKSwgTmVnb3RpYXRl
ZExlZ2FjeVRMUzo6Tm8sIFdURk1vdmUodGhyb3R0bGUtPnJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrTG9hZDo6ZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxC
eXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgJKHJldmlzaW9uIDI1NTc3NykK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAkod29ya2luZyBj
b3B5KQpAQCAtNzQsMTYgKzc0LDE1IEBAIHByaXZhdGU6CiAgICAgLy8gTmV0d29ya0RhdGFUYXNr
Q2xpZW50CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBs
ZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJD
b3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFs
bGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXImJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5k
bGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNz
JikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwg
dWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKICAgICB2b2lkIHdhc0Js
b2NrZWQoKSBmaW5hbDsKICAgICB2b2lkIGNhbm5vdFNob3dVUkwoKSBmaW5hbDsKICAgICB2b2lk
IHdhc0Jsb2NrZWRCeVJlc3RyaWN0aW9ucygpIGZpbmFsOwotICAgIHZvaWQgbmVnb3RpYXRlZExl
Z2FjeVRMUygpIGNvbnN0IGZpbmFsOwogCi0gICAgdm9pZCBub3RpZnlEaWRSZWNlaXZlUmVzcG9u
c2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVy
JiYpOworICAgIHZvaWQgbm90aWZ5RGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxl
ciYmKTsKICAgICB2b2lkIHRocm90dGxlRGVsYXlDb21wbGV0ZWQoKTsKIAogICAgIHN0ZDo6cmVm
ZXJlbmNlX3dyYXBwZXI8TmV0d29ya0xvYWRDbGllbnQ+IG1fY2xpZW50OwpJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5o
CShyZXZpc2lvbiAyNTU3NzcpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw4IEBAIGNsYXNz
IE5ldHdvcmtMb2FkQ2hlY2tlcjsKIGNsYXNzIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s7CiBjbGFz
cyBXZWJTV1NlcnZlckNvbm5lY3Rpb247CiAKK2VudW0gY2xhc3MgTmVnb3RpYXRlZExlZ2FjeVRM
UyA6IGJvb2w7CisKIHN0cnVjdCBSZXNvdXJjZUxvYWRJbmZvOwogCiBuYW1lc3BhY2UgTmV0d29y
a0NhY2hlIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3Bw
CShyZXZpc2lvbiAyNTU3NzcpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdM
b2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQgUGluZ0xvYWQ6
OmRpZFJlY2VpdmVDaGFsbGVuZ2UoQXV0aGUKICAgICBkaWRGaW5pc2goUmVzb3VyY2VFcnJvciB7
IFN0cmluZygpLCAwLCBjdXJyZW50VVJMKCksICJGYWlsZWQgSFRUUCBhdXRoZW50aWNhdGlvbiJf
cywgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9KTsKIH0KIAotdm9pZCBQaW5n
TG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVz
cG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBQaW5nTG9h
ZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgTmVnb3Rp
YXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZSAt
IGh0dHBTdGF0dXNDb2RlOiAlZCIsIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpOwogICAgIGF1
dG8gd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCShyZXZpc2lvbiAyNTU3NzcpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJl
Y3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVu
Z2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRM
UywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRp
b25IYW5kbGVyJiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0
aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3Io
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2Fk
TWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRl
c1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkgZmluYWw7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVN0b3JhZ2UuaAkocmV2aXNpb24gMjU1Nzc3KQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEw
Nyw3ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IGFwcHJveGltYXRlU2l6ZSgpIGNvbnN0
OwogCiAgICAgLy8gSW5jcmVtZW50aW5nIHRoaXMgbnVtYmVyIHdpbGwgZGVsZXRlIGFsbCBleGlz
dGluZyBjYWNoZSBjb250ZW50IGZvciBldmVyeW9uZS4gRG8geW91IHJlYWxseSBuZWVkIHRvIGRv
IGl0PwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB2ZXJzaW9uID0gMTU7CisgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIHZlcnNpb24gPSAxNjsKIAogICAgIFN0cmluZyBiYXNlUGF0aElzb2xh
dGVkQ29weSgpIGNvbnN0OwogICAgIFN0cmluZyB2ZXJzaW9uUGF0aCgpIGNvbnN0OwpJbmRleDog
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EuaAkocmV2aXNpb24gMjU1Nzc3KQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCSh3b3JraW5nIGNvcHkpCkBA
IC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRv
dGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpOwogICAgIHZv
aWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYm
LCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKTsKICAg
ICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlv
bkhhbmRsZXImJik7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5k
bGVyJiYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJik7CiAKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29t
cGxldGlvbkhhbmRsZXImJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0JKHJldmlzaW9uIDI1
NTc3NykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFU
YXNrQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTM3MywxMCArMzczLDEwIEBAIHZvaWQgTmV0
d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVEYXQKICAgICAgICAgbV9jbGllbnQtPmRpZFJl
Y2VpdmVEYXRhKFdURk1vdmUoZGF0YSkpOwogfQogCi12b2lkIE5ldHdvcmtEYXRhVGFza0NvY29h
OjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNl
LCBXZWJLaXQ6OlJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0ZWRMZWdhY3lUTFMgbmVnb3RpYXRl
ZExlZ2FjeVRMUywgV2ViS2l0OjpSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgRU1JVF9TSUdOUE9TVChtX3Rhc2ssICJyZWNlaXZlZCByZXNwb25z
ZSBoZWFkZXJzIik7Ci0gICAgTmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoV1RG
TW92ZShyZXNwb25zZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBOZXR3b3Jr
RGF0YVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgbmVnb3RpYXRl
ZExlZ2FjeVRMUywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdv
cmtEYXRhVGFza0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVy
KQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQkocmV2aXNpb24gMjU1Nzc3KQorKysgU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC04MTgsMjQgKzgxOCwyMiBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vz
c2lvbiAqKXNlc3NpCiAgICAgaWYgKGF1dG8qIG5ldHdvcmtEYXRhVGFzayA9IFtzZWxmIGV4aXN0
aW5nVGFzazpkYXRhVGFza10pIHsKICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
IAotICAgICAgICBib29sIG5lZ290aWF0ZWRMZWdhY3lUTFMgPSBmYWxzZTsKKyAgICAgICAgTmVn
b3RpYXRlZExlZ2FjeVRMUyBuZWdvdGlhdGVkTGVnYWN5VExTID0gTmVnb3RpYXRlZExlZ2FjeVRM
Uzo6Tm87CiAjaWYgSEFWRShUTFNfUFJPVE9DT0xfVkVSU0lPTl9UKQogICAgICAgICBOU1VSTFNl
c3Npb25UYXNrVHJhbnNhY3Rpb25NZXRyaWNzICptZXRyaWNzID0gZGF0YVRhc2suX2luY29tcGxl
dGVUYXNrTWV0cmljcy50cmFuc2FjdGlvbk1ldHJpY3MubGFzdE9iamVjdDsKICAgICAgICAgYXV0
byB0bHNWZXJzaW9uID0gKHRsc19wcm90b2NvbF92ZXJzaW9uX3QpbWV0cmljcy5uZWdvdGlhdGVk
VExTUHJvdG9jb2xWZXJzaW9uLnVuc2lnbmVkU2hvcnRWYWx1ZTsKICAgICAgICAgaWYgKHRsc1Zl
cnNpb24gPT0gdGxzX3Byb3RvY29sX3ZlcnNpb25fVExTdjEwIHx8IHRsc1ZlcnNpb24gPT0gdGxz
X3Byb3RvY29sX3ZlcnNpb25fVExTdjExKQotICAgICAgICAgICAgbmVnb3RpYXRlZExlZ2FjeVRM
UyA9IHRydWU7CisgICAgICAgICAgICBuZWdvdGlhdGVkTGVnYWN5VExTID0gTmVnb3RpYXRlZExl
Z2FjeVRMUzo6WWVzOwogICAgICAgICBVTlVTRURfUEFSQU0obWV0cmljcyk7CiAjZWxzZSAvLyBX
ZSBkbyBub3QgbmVlZCB0byBjaGVjayBfVExTTmVnb3RpYXRlZFByb3RvY29sVmVyc2lvbiBpZiB3
ZSBoYXZlIG1ldHJpY3MubmVnb3RpYXRlZFRMU1Byb3RvY29sVmVyc2lvbiBiZWNhdXNlIGl0IHdv
cmtzIGF0IHJlc3BvbnNlIHRpbWUgZXZlbiBiZWZvcmUgcmRhcjovL3Byb2JsZW0vNTY1MjI2MDEK
ICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgaWYg
KFtkYXRhVGFzayByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9UTFNOZWdvdGlhdGVkUHJv
dG9jb2xWZXJzaW9uKV0pIHsKICAgICAgICAgICAgIFNTTFByb3RvY29sIHRsc1ZlcnNpb24gPSBb
ZGF0YVRhc2sgX1RMU05lZ290aWF0ZWRQcm90b2NvbFZlcnNpb25dOwogICAgICAgICAgICAgaWYg
KHRsc1ZlcnNpb24gPT0ga1RMU1Byb3RvY29sMTEgfHwgdGxzVmVyc2lvbiA9PSBrVExTUHJvdG9j
b2wxKQotICAgICAgICAgICAgICAgIG5lZ290aWF0ZWRMZWdhY3lUTFMgPSB0cnVlOworICAgICAg
ICAgICAgICAgIG5lZ290aWF0ZWRMZWdhY3lUTFMgPSBOZWdvdGlhdGVkTGVnYWN5VExTOjpZZXM7
CiAgICAgICAgIH0KICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAj
ZW5kaWYKLSAgICAgICAgaWYgKG5lZ290aWF0ZWRMZWdhY3lUTFMpCi0gICAgICAgICAgICBuZXR3
b3JrRGF0YVRhc2stPm5lZ290aWF0ZWRMZWdhY3lUTFMoKTsKICAgICAgICAgCiAgICAgICAgIC8v
IEF2b2lkIE1JTUUgdHlwZSBzbmlmZmluZyBpZiB0aGUgcmVzcG9uc2UgY29tZXMgYmFjayBhcyAz
MDQgTm90IE1vZGlmaWVkLgogICAgICAgICBpbnQgc3RhdHVzQ29kZSA9IFtyZXNwb25zZSBpc0tp
bmRPZkNsYXNzOk5TSFRUUFVSTFJlc3BvbnNlLmNsYXNzXSA/IFsoTlNIVFRQVVJMUmVzcG9uc2Ug
KilyZXNwb25zZSBzdGF0dXNDb2RlXSA6IDA7CkBAIC04NTQsNyArODUyLDcgQEAgLSAodm9pZClV
UkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaQogICAgICAgICBjb3B5VGltaW5nRGF0YShb
ZGF0YVRhc2sgX3RpbWluZ0RhdGFdLCByZXNvdXJjZVJlc3BvbnNlLmRlcHJlY2F0ZWROZXR3b3Jr
TG9hZE1ldHJpY3MoKSk7CiAKICAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBC
bG9ja19jb3B5KGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICAgICAgbmV0d29ya0RhdGFUYXNrLT5k
aWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShyZXNvdXJjZVJlc3BvbnNlKSwgW2NvbXBsZXRpb25I
YW5kbGVyQ29weSwgdGFza0lkZW50aWZpZXJdKFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lB
Y3Rpb24pIHsKKyAgICAgICAgbmV0d29ya0RhdGFUYXNrLT5kaWRSZWNlaXZlUmVzcG9uc2UoV1RG
TW92ZShyZXNvdXJjZVJlc3BvbnNlKSwgbmVnb3RpYXRlZExlZ2FjeVRMUywgW2NvbXBsZXRpb25I
YW5kbGVyQ29weSwgdGFza0lkZW50aWZpZXJdKFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lB
Y3Rpb24pIHsKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgICAgICAgICBMT0coTmV0d29ya1Nlc3Np
b24sICIlbGx1IGRpZFJlY2VpdmVSZXNwb25zZSBjb21wbGV0aW9uSGFuZGxlciAoJWQpIiwgdGFz
a0lkZW50aWZpZXIsIHBvbGljeUFjdGlvbik7CiAjZWxzZQpJbmRleDogU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNw
cAkocmV2aXNpb24gMjU1Nzc3KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJs
L05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjQsNyArMjI0LDcg
QEAgYm9vbCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpzaG91bGRSZWRpcmVjdAogCiB2b2lkIE5ldHdv
cmtEYXRhVGFza0N1cmw6Omludm9rZURpZFJlY2VpdmVSZXNwb25zZSgpCiB7Ci0gICAgZGlkUmVj
ZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UobV9yZXNwb25zZSksIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIHsKKyAg
ICBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZShtX3Jlc3BvbnNlKSwgTmVnb3Rp
YXRlZExlZ2FjeVRMUzo6Tm8sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyld
KFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIHsKICAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3Rh
dGU6OkNhbmNlbGluZyB8fCBtX3N0YXRlID09IFN0YXRlOjpDb21wbGV0ZWQpCiAgICAgICAgICAg
ICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3
b3JrRGF0YVRhc2tTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAJKHJldmlzaW9uIDI1NTc3NykKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzc4LDcgKzM3OCw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNr
U291cDo6ZGlzcGF0Y2hEaWRSZWMKICAgICBkZXByZWNhdGVkUmVzcG9uc2VNZXRyaWNzLnJlcXVl
c3RTdGFydCA9IG1fbmV0d29ya0xvYWRNZXRyaWNzLnJlcXVlc3RTdGFydDsKICAgICBkZXByZWNh
dGVkUmVzcG9uc2VNZXRyaWNzLnJlc3BvbnNlU3RhcnQgPSBtX25ldHdvcmtMb2FkTWV0cmljcy5y
ZXNwb25zZVN0YXJ0OwogCi0gICAgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2Uo
bV9yZXNwb25zZSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKFBvbGlj
eUFjdGlvbiBwb2xpY3lBY3Rpb24pIHsKKyAgICBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VS
ZXNwb25zZShtX3Jlc3BvbnNlKSwgTmVnb3RpYXRlZExlZ2FjeVRMUzo6Tm8sIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIHsK
ICAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNhbmNlbGluZyB8fCBtX3N0YXRlID09IFN0
YXRlOjpDb21wbGV0ZWQpIHsKICAgICAgICAgICAgIGNsZWFyUmVxdWVzdCgpOwogICAgICAgICAg
ICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5j
cHAJKHJldmlzaW9uIDI1NTc3NykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2Fk
U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTcsNyArMzE3LDcgQEAgdm9pZCBQYWdlTG9h
ZFN0YXRlOjpkaWRGYWlsUHJvdmlzaW9uYWxMbwogICAgIG1fdW5jb21taXR0ZWRTdGF0ZS51bnJl
YWNoYWJsZVVSTCA9IG1fbGFzdFVucmVhY2hhYmxlVVJMOwogfQogCi12b2lkIFBhZ2VMb2FkU3Rh
dGU6OmRpZENvbW1pdExvYWQoY29uc3QgVHJhbnNhY3Rpb246OlRva2VuJiB0b2tlbiwgV2ViQ2Vy
dGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgaGFzSW5zZWN1cmVDb250ZW50KQor
dm9pZCBQYWdlTG9hZFN0YXRlOjpkaWRDb21taXRMb2FkKGNvbnN0IFRyYW5zYWN0aW9uOjpUb2tl
biYgdG9rZW4sIFdlYkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBib29sIGhhc0lu
c2VjdXJlQ29udGVudCwgYm9vbCB1c2VkTGVnYWN5VExTKQogewogICAgIEFTU0VSVF9VTlVTRUQo
dG9rZW4sICZ0b2tlbi5tX3BhZ2VMb2FkU3RhdGUgPT0gdGhpcyk7CiAgICAgQVNTRVJUKG1fdW5j
b21taXR0ZWRTdGF0ZS5zdGF0ZSA9PSBTdGF0ZTo6UHJvdmlzaW9uYWwpOwpAQCAtMzI4LDcgKzMy
OCw3IEBAIHZvaWQgUGFnZUxvYWRTdGF0ZTo6ZGlkQ29tbWl0TG9hZChjb25zdCAKIAogICAgIG1f
dW5jb21taXR0ZWRTdGF0ZS51cmwgPSBtX3VuY29tbWl0dGVkU3RhdGUucHJvdmlzaW9uYWxVUkw7
CiAgICAgbV91bmNvbW1pdHRlZFN0YXRlLnByb3Zpc2lvbmFsVVJMID0gU3RyaW5nKCk7Ci0gICAg
bV91bmNvbW1pdHRlZFN0YXRlLm5lZ290aWF0ZWRMZWdhY3lUTFMgPSBmYWxzZTsKKyAgICBtX3Vu
Y29tbWl0dGVkU3RhdGUubmVnb3RpYXRlZExlZ2FjeVRMUyA9IHVzZWRMZWdhY3lUTFM7CiAKICAg
ICBtX3VuY29tbWl0dGVkU3RhdGUudGl0bGUgPSBTdHJpbmcoKTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmgJKHJldmlzaW9uIDI1NTc3NykKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTYz
LDcgKzE2Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZv
clByb3Zpc2lvbmFsTG9hZChjb25zdCBUcmFuc2FjdGlvbjo6VG9rZW4mLCBjb25zdCBTdHJpbmcm
IHVybCk7CiAgICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFRyYW5zYWN0aW9u
OjpUb2tlbiYpOwogCi0gICAgdm9pZCBkaWRDb21taXRMb2FkKGNvbnN0IFRyYW5zYWN0aW9uOjpU
b2tlbiYsIFdlYkNlcnRpZmljYXRlSW5mbyYsIGJvb2wgaGFzSW5zZWN1cmVDb250ZW50KTsKKyAg
ICB2b2lkIGRpZENvbW1pdExvYWQoY29uc3QgVHJhbnNhY3Rpb246OlRva2VuJiwgV2ViQ2VydGlm
aWNhdGVJbmZvJiwgYm9vbCBoYXNJbnNlY3VyZUNvbnRlbnQsIGJvb2wgdXNlZExlZ2FjeVRMUyk7
CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkKGNvbnN0IFRyYW5zYWN0aW9uOjpUb2tlbiYpOwogICAg
IHZvaWQgZGlkRmFpbExvYWQoY29uc3QgVHJhbnNhY3Rpb246OlRva2VuJik7CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAJKHJl
dmlzaW9uIDI1NTc3NykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFn
ZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY0LDcgKzI2NCw3IEBAIHZvaWQgUHJvdmlz
aW9uYWxQYWdlUHJveHk6OmRpZEZhaWxQcm92aXMKICAgICBtX3BhZ2UuZGlkRmFpbFByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIGZyYW1lSUQsIFdURk1v
dmUoZnJhbWVTZWN1cml0eU9yaWdpbiksIG5hdmlnYXRpb25JRCwgcHJvdmlzaW9uYWxVUkwsIGVy
cm9yLCB3aWxsQ29udGludWVMb2FkaW5nLCB1c2VyRGF0YSk7IC8vIE1heSBkZWxldGUgfHRoaXN8
LgogfQogCi12b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUo
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMy
X3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZp
Y2F0ZUluZm8sIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6
SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJE
YXRhJiB1c2VyRGF0YSkKK3ZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZENvbW1pdExvYWRG
b3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVy
LCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8m
IGNlcnRpZmljYXRlSW5mbywgYm9vbCB1c2VkTGVnYWN5VExTLCBib29sIGNvbnRhaW5zUGx1Z2lu
RG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFz
SW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgaWYgKCF2
YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkpCiAgICAgICAgIHJldHVybjsKQEAg
LTI3NCw3ICsyNzQsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDb21taXRMb2Fk
CiAgICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VJRCk7CiAKICAgICBtX3dhc0Nv
bW1pdHRlZCA9IHRydWU7Ci0gICAgbV9wYWdlLmNvbW1pdFByb3Zpc2lvbmFsUGFnZShmcmFtZUlE
LCBuYXZpZ2F0aW9uSUQsIG1pbWVUeXBlLCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwg
ZnJhbWVMb2FkVHlwZSwgY2VydGlmaWNhdGVJbmZvLCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBm
b3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIHVzZXJEYXRhKTsgLy8gV2lsbCBkZWxldGUgfHRoaXN8
LgorICAgIG1fcGFnZS5jb21taXRQcm92aXNpb25hbFBhZ2UoZnJhbWVJRCwgbmF2aWdhdGlvbklE
LCBtaW1lVHlwZSwgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIGZyYW1lTG9hZFR5cGUs
IGNlcnRpZmljYXRlSW5mbywgdXNlZExlZ2FjeVRMUywgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwg
Zm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCB1c2VyRGF0YSk7IC8vIFdpbGwgZGVsZXRlIHx0aGlz
fC4KIH0KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkTmF2aWdhdGVXaXRoTmF2aWdh
dGlvbkRhdGEoY29uc3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYgc3RvcmUsIEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlEKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQ
YWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNp
b25hbFBhZ2VQcm94eS5oCShyZXZpc2lvbiAyNTU3NzcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNyArMTIy
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBT
dHJpbmcmIHNvdXJjZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTFN0cmlu
ZywgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZENyZWF0ZU1haW5GcmFt
ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25h
bExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgVVJMJiYsIFVSTCYmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYpOwotICAg
IHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFz
Q3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJD
b3JlOjpDZXJ0aWZpY2F0ZUluZm8mLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlv
bmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50
LCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBm
cmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mLCBib29sIHVzZWRM
ZWdhY3lUTFMsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6
SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJE
YXRhJik7CiAgICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3Vy
aXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9u
YWxVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBXZWJDb3JlOjpXaWxsQ29udGlu
dWVMb2FkaW5nLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgc3RhcnRVUkxTY2hlbWVUYXNr
KFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYpOwogICAgIHZvaWQgYmFja0ZvcndhcmRHb1RvSXRl
bShjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgY29uc3QgV2ViQmFja0Zvcndh
cmRMaXN0Q291bnRzJik+JiYpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCShyZXZpc2lvbiAyNTU3NzcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTYxLDcgKzMxNjEsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvCiAgICAgc2VuZGVyLT5zZW5kKGFj
dGlvbiwgbmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpIDogMCwgZG93bmxv
YWRJRCwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6
OmNvbW1pdFByb3Zpc2lvbmFsUGFnZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9t
Q29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpD
ZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCBjb250YWluc1BsdWdpbkRvY3Vt
ZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2Vj
dXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6
OmNvbW1pdFByb3Zpc2lvbmFsUGFnZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9t
Q29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpD
ZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCB1c2VkTGVnYWN5VExTLCBib29s
IGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29u
dGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEp
CiB7CiAgICAgQVNTRVJUKG1fcHJvdmlzaW9uYWxQYWdlKTsKICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJjb21taXRQcm92aXNpb25hbFBhZ2U6IG5ld1BJRCA9ICVpIiwgbV9w
cm92aXNpb25hbFBhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzSWRlbnRpZmllcigpKTsKQEAgLTMxOTUs
NyArMzE5NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNpb25hbFBhZ2UKICAg
ICBjb25zdCBhdXRvIG9sZFdlYlBhZ2VJRCA9IG1fd2ViUGFnZUlEOwogICAgIHN3YXBUb1Byb3Zp
c2lvbmFsUGFnZShzdGQ6OmV4Y2hhbmdlKG1fcHJvdmlzaW9uYWxQYWdlLCBudWxscHRyKSk7CiAK
LSAgICBkaWRDb21taXRMb2FkRm9yRnJhbWUoZnJhbWVJRCwgbmF2aWdhdGlvbklELCBtaW1lVHlw
ZSwgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIGZyYW1lTG9hZFR5cGUsIGNlcnRpZmlj
YXRlSW5mbywgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50
LCB1c2VyRGF0YSk7CisgICAgZGlkQ29tbWl0TG9hZEZvckZyYW1lKGZyYW1lSUQsIG5hdmlnYXRp
b25JRCwgbWltZVR5cGUsIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBmcmFtZUxvYWRU
eXBlLCBjZXJ0aWZpY2F0ZUluZm8sIHVzZWRMZWdhY3lUTFMsIGNvbnRhaW5zUGx1Z2luRG9jdW1l
bnQsIGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgdXNlckRhdGEpOwogCiAgICAgbV9pbnNwZWN0
b3JDb250cm9sbGVyLT5kaWRDb21taXRQcm92aXNpb25hbFBhZ2Uob2xkV2ViUGFnZUlELCBtX3dl
YlBhZ2VJRCk7CiB9CkBAIC00NDgxLDcgKzQ0ODEsNyBAQCBzdGF0aWMgT3B0aW9uU2V0PENyb3Nz
U2l0ZU5hdmlnYXRpb25EYXRhCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZENv
bW1pdExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVu
dFByb3ZpZGVyLCB1aW50MzJfdCBvcGFxdWVGcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpD
ZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCBjb250YWluc1BsdWdpbkRvY3Vt
ZW50LCBPcHRpb25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+IGhhc0luc2VjdXJlQ29udGVudCwgY29u
c3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRG
b3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVy
LCB1aW50MzJfdCBvcGFxdWVGcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0
ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCB1c2VkTGVnYWN5VExTLCBib29sIGNvbnRhaW5z
UGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPEhhc0luc2VjdXJlQ29udGVudD4gaGFzSW5zZWN1cmVD
b250ZW50LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgTE9HKExvYWRpbmcsICIo
TG9hZGluZykgV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGRpZENvbW1pdExvYWRGb3JGcmFtZSBp
biBuYXZpZ2F0aW9uICUiIFBSSXU2NCwgbV9pZGVudGlmaWVyLnRvVUludDY0KCksIG5hdmlnYXRp
b25JRCk7CiAgICAgTE9HKEJhY2tGb3J3YXJkLCAiKEJhY2svRm9yd2FyZCkgQWZ0ZXIgbG9hZCBj
b21taXQsIGJhY2svZm9yd2FyZCBsaXN0IGlzIG5vdzolcyIsIG1fYmFja0ZvcndhcmRMaXN0LT5s
b2dnaW5nU3RyaW5nKCkpOwpAQCAtNDUyMyw3ICs0NTIzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpZENvbW1pdExvYWRGb3JGcmFtZQogICAgIGJvb2wgbWFya1BhZ2VJbnNlY3VyZSA9IGhhc0lu
c2VjdXJlQ29udGVudCA/IGhhc0luc2VjdXJlQ29udGVudC52YWx1ZSgpID09IEhhc0luc2VjdXJl
Q29udGVudDo6WWVzIDogbV90cmVhdHNTSEExQ2VydGlmaWNhdGVzQXNJbnNlY3VyZSAmJiBjZXJ0
aWZpY2F0ZUluZm8uY29udGFpbnNOb25Sb290U0hBMVNpZ25lZENlcnRpZmljYXRlKCk7CiAKICAg
ICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpIHsKLSAgICAgICAgbV9wYWdlTG9hZFN0YXRlLmRp
ZENvbW1pdExvYWQodHJhbnNhY3Rpb24sIHdlYkNlcnRpZmljYXRlSW5mbywgbWFya1BhZ2VJbnNl
Y3VyZSk7CisgICAgICAgIG1fcGFnZUxvYWRTdGF0ZS5kaWRDb21taXRMb2FkKHRyYW5zYWN0aW9u
LCB3ZWJDZXJ0aWZpY2F0ZUluZm8sIG1hcmtQYWdlSW5zZWN1cmUsIHVzZWRMZWdhY3lUTFMpOwog
ICAgICAgICBtX3Nob3VsZFN1cHByZXNzTmV4dEF1dG9tYXRpY05hdmlnYXRpb25TbmFwc2hvdCA9
IGZhbHNlOwogICAgIH0gZWxzZSBpZiAobWFya1BhZ2VJbnNlY3VyZSkKICAgICAgICAgbV9wYWdl
TG9hZFN0YXRlLmRpZERpc3BsYXlPclJ1bkluc2VjdXJlQ29udGVudCh0cmFuc2FjdGlvbik7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjU1Nzc3
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE1ODcsNyArMTU4Nyw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgUHJvdmlzaW9u
YWxQYWdlUHJveHkqIHByb3Zpc2lvbmFsUGFnZVByb3h5KCkgY29uc3QgeyByZXR1cm4gbV9wcm92
aXNpb25hbFBhZ2UuZ2V0KCk7IH0KLSAgICB2b2lkIGNvbW1pdFByb3Zpc2lvbmFsUGFnZShXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3Qg
ZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiwgYm9vbCBjb250
YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+
IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGNv
bW1pdFByb3Zpc2lvbmFsUGFnZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNv
bnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2Vy
dGlmaWNhdGVJbmZvJiwgYm9vbCB1c2VkTGVnYWN5VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9j
dW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5z
ZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYpOwogCiAgICAgLy8gTG9naWMgc2hhcmVkIGJl
dHdlZW4gdGhlIFdlYlBhZ2VQcm94eSBhbmQgdGhlIFByb3Zpc2lvbmFsUGFnZVByb3h5LgogICAg
IHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgVVJMJiYsIFVSTCYmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYpOwpAQCAtMTcz
Nyw3ICsxNzM3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENhbmNlbENsaWVudFJlZGlyZWN0
Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZENoYW5nZVBy
b3Zpc2lvbmFsVVJMRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIFVSTCYmKTsKICAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JG
cmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3Ry
aW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFdlYkNv
cmU6OldpbGxDb250aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBkaWRD
b21taXRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250
ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRp
ZmljYXRlSW5mbyYsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29y
ZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVz
ZXJEYXRhJik7CisgICAgdm9pZCBkaWRDb21taXRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9hZFR5
cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYsIGJvb2wgdXNlZExlZ2FjeVRMUywg
Ym9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3Vy
ZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmKTsKICAg
ICB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQg
ZGlkRmluaXNoTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkRmFpbExvYWRGb3JG
cmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFVzZXJEYXRhJik7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShyZXZp
c2lvbiAyNTU3NzcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTEyNiw3ICsxMjYsNyBAQCBtZXNzYWdlcyAtPiBX
ZWJQYWdlUHJveHkgewogICAgIERpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCiAgICAgRGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxG
b3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBVUkwgdXJsKQogICAgIERpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFN0cmlu
ZyBwcm92aXNpb25hbFVSTCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgZW51bTpib29s
IFdlYkNvcmU6OldpbGxDb250aW51ZUxvYWRpbmcgd2lsbENvbnRpbnVlTG9hZGluZywgV2ViS2l0
OjpVc2VyRGF0YSB1c2VyRGF0YSkKLSAgICBEaWRDb21taXRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU3RyaW5nIG1p
bWVUeXBlLCBib29sIGhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgbG9hZFR5cGUs
IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgY29udGFpbnNQ
bHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3Jj
ZWRIYXNJbnNlY3VyZUNvbnRlbnQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCisgICAgRGlk
Q29tbWl0TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIFN0cmluZyBtaW1lVHlwZSwgYm9vbCBoYXNDdXN0b21Db250ZW50
UHJvdmlkZXIsIHVpbnQzMl90IGxvYWRUeXBlLCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8gY2Vy
dGlmaWNhdGVJbmZvLCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1
bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNl
Y3VyZUNvbnRlbnQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkRmFpbExvYWRG
b3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBXZWJLaXQ6OlVzZXJEYXRhIHVz
ZXJEYXRhKQogICAgIERpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYktpdDo6VXNlckRh
dGEgdXNlckRhdGEpCiAgICAgRGlkRmluaXNoTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYktpdDo6VXNlckRhdGEg
dXNlckRhdGEpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9u
IDI1NTc3NykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2MCw3ICs1NjAsNyBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvCiAgICAgd2ViUGFnZS0+c2Fu
ZGJveEV4dGVuc2lvblRyYWNrZXIoKS5kaWRDb21taXRQcm92aXNpb25hbExvYWQobV9mcmFtZSk7
CiAKICAgICAvLyBOb3RpZnkgdGhlIFVJUHJvY2Vzcy4KLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRpZENvbW1pdExvYWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlE
KCksIGRvY3VtZW50TG9hZGVyLm5hdmlnYXRpb25JRCgpLCBkb2N1bWVudExvYWRlci5yZXNwb25z
ZSgpLm1pbWVUeXBlKCksIG1fZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHN0YXRpY19j
YXN0PHVpbnQzMl90PihtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkubG9hZFR5cGUoKSks
IHZhbHVlT3JDb21wdXRlKGRvY3VtZW50TG9hZGVyLnJlc3BvbnNlKCkuY2VydGlmaWNhdGVJbmZv
KCksIFtdIHsgcmV0dXJuIENlcnRpZmljYXRlSW5mbygpOyB9KSwgbV9mcmFtZS0+Y29yZUZyYW1l
KCktPmRvY3VtZW50KCktPmlzUGx1Z2luRG9jdW1lbnQoKSwgaGFzSW5zZWN1cmVDb250ZW50LCBV
c2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVz
KHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKKyAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpZENvbW1pdExvYWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIGRv
Y3VtZW50TG9hZGVyLm5hdmlnYXRpb25JRCgpLCBkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLm1p
bWVUeXBlKCksIG1fZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHN0YXRpY19jYXN0PHVp
bnQzMl90PihtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkubG9hZFR5cGUoKSksIHZhbHVl
T3JDb21wdXRlKGRvY3VtZW50TG9hZGVyLnJlc3BvbnNlKCkuY2VydGlmaWNhdGVJbmZvKCksIFtd
IHsgcmV0dXJuIENlcnRpZmljYXRlSW5mbygpOyB9KSwgZG9jdW1lbnRMb2FkZXIucmVzcG9uc2Uo
KS51c2VkTGVnYWN5VExTKCksIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLT5pc1Bs
dWdpbkRvY3VtZW50KCksIGhhc0luc2VjdXJlQ29udGVudCwgVXNlckRhdGEoV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0
KCkpKSk7CiAgICAgd2ViUGFnZS0+ZGlkQ29tbWl0TG9hZChtX2ZyYW1lKTsKIH0KIApJbmRleDog
VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24g
MjU1Nzc3KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQg
QEAKKzIwMjAtMDItMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBNYWtlIFdLV2ViVmlldy5fbmVnb3RpYXRlZExlZ2FjeVRMUyBhY2N1cmF0
ZSB3aGVuIGxvYWRpbmcgbWFpbiByZXNvdW9yY2UgZnJvbSBuZXR3b3JrIG9yIGNhY2hlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcyMDcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIVFRQU2VydmVyIG5v
dyBzdXBwb3J0cyBIVFRQUy4gVGVsbCB5b3VyIGZyaWVuZHMhCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NoYWxsZW5nZS5tbToKKyAgICAgICAgKHRlc3RDZXJ0
aWZpY2F0ZSk6CisgICAgICAgICh0ZXN0SWRlbnRpdHkpOgorICAgICAgICAoY3JlZGVudGlhbFdp
dGhJZGVudGl0eSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9U
TFNEZXByZWNhdGlvbi5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OndlYlZpZXdXaXRoTmF2
aWdhdGlvbkRlbGVnYXRlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5oOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkhUVFBT
ZXJ2ZXI6OkhUVFBTZXJ2ZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6
cmVxdWVzdCBjb25zdCk6CisKIDIwMjAtMDItMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggTWFjIENNYWtlIGJ1aWxkCkluZGV4OiBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NoYWxsZW5nZS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NoYWxsZW5nZS5t
bQkocmV2aXNpb24gMjU1Nzc3KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9DaGFsbGVuZ2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2lt
cG9ydCAiY29uZmlnLmgiCiAKKyNpbXBvcnQgIkhUVFBTZXJ2ZXIuaCIKICNpbXBvcnQgIlBsYXRm
b3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUQ1BTZXJ2ZXIuaCIKICNpbXBvcnQgIlRlc3QuaCIK
QEAgLTQzLDExICs0NCwxNCBAQAogCiBzdGF0aWMgYm9vbCBuYXZpZ2F0aW9uRmluaXNoZWQ7CiAK
LXN0YXRpYyBSZXRhaW5QdHI8TlNVUkxDcmVkZW50aWFsPiBjcmVkZW50aWFsV2l0aElkZW50aXR5
KCkKK3N0YXRpYyBSZXRhaW5QdHI8U2VjQ2VydGlmaWNhdGVSZWY+IHRlc3RDZXJ0aWZpY2F0ZSgp
CiB7CiAgICAgYXV0byBjZXJ0aWZpY2F0ZUJ5dGVzID0gVGVzdFdlYktpdEFQSTo6VENQU2VydmVy
Ojp0ZXN0Q2VydGlmaWNhdGUoKTsKLSAgICBhdXRvIGNlcnRpZmljYXRlID0gYWRvcHRDRihTZWND
ZXJ0aWZpY2F0ZUNyZWF0ZVdpdGhEYXRhKG51bGxwdHIsIChfX2JyaWRnZSBDRkRhdGFSZWYpW05T
RGF0YSBkYXRhV2l0aEJ5dGVzOmNlcnRpZmljYXRlQnl0ZXMuZGF0YSgpIGxlbmd0aDpjZXJ0aWZp
Y2F0ZUJ5dGVzLnNpemUoKV0pKTsKLSAgICAKKyAgICByZXR1cm4gYWRvcHRDRihTZWNDZXJ0aWZp
Y2F0ZUNyZWF0ZVdpdGhEYXRhKG51bGxwdHIsIChfX2JyaWRnZSBDRkRhdGFSZWYpW05TRGF0YSBk
YXRhV2l0aEJ5dGVzOmNlcnRpZmljYXRlQnl0ZXMuZGF0YSgpIGxlbmd0aDpjZXJ0aWZpY2F0ZUJ5
dGVzLnNpemUoKV0pKTsKK30KKworUmV0YWluUHRyPFNlY0lkZW50aXR5UmVmPiB0ZXN0SWRlbnRp
dHkoKQorewogICAgIGF1dG8gcHJpdmF0ZUtleUJ5dGVzID0gVGVzdFdlYktpdEFQSTo6VENQU2Vy
dmVyOjp0ZXN0UHJpdmF0ZUtleSgpOwogICAgIE5TRGF0YSAqZGVyRW5jb2RlZFByaXZhdGVLZXkg
PSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6cHJpdmF0ZUtleUJ5dGVzLmRhdGEoKSBsZW5ndGg6cHJp
dmF0ZUtleUJ5dGVzLnNpemUoKV07CiAgICAgTlNEaWN0aW9uYXJ5KiBvcHRpb25zID0gQHsKQEAg
LTYxLDEwICs2NSwxNSBAQCBzdGF0aWMgUmV0YWluUHRyPE5TVVJMQ3JlZGVudGlhbD4gY3JlZGVu
CiAgICAgRVhQRUNUX05VTEwoZXJyb3IpOwogICAgIEVYUEVDVF9OT1RfTlVMTChwcml2YXRlS2V5
LmdldCgpKTsKIAotICAgIGF1dG8gaWRlbnRpdHkgPSBhZG9wdENGKFNlY0lkZW50aXR5Q3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGNlcnRpZmljYXRlLmdldCgpLCBwcml2YXRlS2V5LmdldCgp
KSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoU2VjSWRlbnRpdHlDcmVhdGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgdGVzdENlcnRpZmljYXRlKCkuZ2V0KCksIHByaXZhdGVLZXkuZ2V0KCkpKTsKK30KKwor
c3RhdGljIFJldGFpblB0cjxOU1VSTENyZWRlbnRpYWw+IGNyZWRlbnRpYWxXaXRoSWRlbnRpdHko
KQoreworICAgIGF1dG8gaWRlbnRpdHkgPSB0ZXN0SWRlbnRpdHkoKTsKICAgICBFWFBFQ1RfTk9U
X05VTEwoaWRlbnRpdHkpOwogICAgIAotICAgIHJldHVybiBbTlNVUkxDcmVkZW50aWFsIGNyZWRl
bnRpYWxXaXRoSWRlbnRpdHk6aWRlbnRpdHkuZ2V0KCkgY2VydGlmaWNhdGVzOkBbKGlkKWNlcnRp
ZmljYXRlLmdldCgpXSBwZXJzaXN0ZW5jZTpOU1VSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmVd
OworICAgIHJldHVybiBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxXaXRoSWRlbnRpdHk6aWRl
bnRpdHkuZ2V0KCkgY2VydGlmaWNhdGVzOkBbKGlkKXRlc3RDZXJ0aWZpY2F0ZSgpLmdldCgpXSBw
ZXJzaXN0ZW5jZTpOU1VSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmVdOwogfQogCiBAaW50ZXJm
YWNlIENoYWxsZW5nZURlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgpJ
bmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UTFNEZXByZWNhdGlv
bi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1RMU0RlcHJlY2F0aW9uLm1tCShyZXZpc2lvbiAyNTU3NzcpCisrKyBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1RMU0RlcHJlY2F0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yNyw2ICsyNyw3IEBACiAKICNpZiBIQVZFKFNTTCkKIAorI2ltcG9ydCAiSFRUUFNlcnZlci5o
IgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRDUFNlcnZlci5oIgog
I2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgpAQCAtMzcsMTMgKzM4LDE0IEBACiAj
aW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQg
PHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICNpbXBvcnQgPFdlYktpdC9XZWJVSUtpdFN1cHBvcnQuaD4KICNpbXBvcnQgPFdl
YktpdC9XZWJDb3JlVGhyZWFkLmg+CiAjZW5kaWYKIAotI2lmIEhBVkUoVExTX1BST1RPQ09MX1ZF
UlNJT05fVCkKKyNpZiBIQVZFKFRMU19QUk9UT0NPTF9WRVJTSU9OX1QpIHx8IEhBVkUoTkVUV09S
S19GUkFNRVdPUkspCiBAaW50ZXJmYWNlIFRMU09ic2VydmVyIDogTlNPYmplY3QKIC0gKHZvaWQp
d2FpdFVudGlsTmVnb3RpYXRlZExlZ2FjeVRMU0NoYW5nZWQ7CiBAZW5kCkBAIC0yMjgsMTMgKzIz
MCw5IEBAIFRFU1QoVExTVmVyc2lvbiwgRElTQUJMRURfTmF2aWdhdGlvbkRlbGUKIH0KIAogI2lm
IEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkKLVRFU1QoVExTVmVyc2lvbiwgTmVnb3RpYXRl
ZExlZ2FjeVRMUykKLXsKLSAgICBUQ1BTZXJ2ZXIgc2VydmVyKFRDUFNlcnZlcjo6UHJvdG9jb2w6
OkhUVFBTLCBbXSAoU1NMICpzc2wpIHsKLSAgICAgICAgVENQU2VydmVyOjpyZXNwb25kV2l0aE9L
KHNzbCk7Ci0gICAgICAgIFRDUFNlcnZlcjo6cmVzcG9uZFdpdGhPSyhzc2wpOwotICAgIH0sIHRs
czFfMSk7CiAKK3N0YXRpYyBzdGQ6OnBhaXI8UmV0YWluUHRyPFdLV2ViVmlldz4sIFJldGFpblB0
cjxUZXN0TmF2aWdhdGlvbkRlbGVnYXRlPj4gd2ViVmlld1dpdGhOYXZpZ2F0aW9uRGVsZWdhdGUo
KQorewogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRl
IG5ld10pOwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKICAg
ICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwpAQCAtMjQy
LDYgKzI0MCwyMCBAQCBURVNUKFRMU1ZlcnNpb24sIE5lZ290aWF0ZWRMZWdhY3lUTFMpCiAgICAg
ICAgIEVYUEVDVF9XS19TVFJFUShjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0
aW9uTWV0aG9kLCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmVyVHJ1c3QpOwogICAgICAg
ICBjYWxsYmFjayhOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgW05TVVJM
Q3JlZGVudGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5z
ZXJ2ZXJUcnVzdF0pOwogICAgIH1dOworICAgIHJldHVybiB7IHdlYlZpZXcsIGRlbGVnYXRlIH07
Cit9CisKKyNlbmRpZiAvLyBIQVZFKFRMU19QUk9UT0NPTF9WRVJTSU9OX1QpIHx8IEhBVkUoTkVU
V09SS19GUkFNRVdPUkspCisKKyNpZiBIQVZFKFRMU19QUk9UT0NPTF9WRVJTSU9OX1QpCisKK1RF
U1QoVExTVmVyc2lvbiwgTmVnb3RpYXRlZExlZ2FjeVRMUykKK3sKKyAgICBIVFRQU2VydmVyIHNl
cnZlcih7CisgICAgICAgIHsgIi8iLCB7ICJoZWxsbyIgfSB9CisgICAgfSwgSFRUUFNlcnZlcjo6
UHJvdG9jb2w6Okh0dHBzV2l0aExlZ2FjeVRMUyk7CisKKyAgICBhdXRvIFt3ZWJWaWV3LCBkZWxl
Z2F0ZV0gPSB3ZWJWaWV3V2l0aE5hdmlnYXRpb25EZWxlZ2F0ZSgpOwogICAgIE5TVVJMUmVxdWVz
dCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhT
dHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwczovLzEyNy4wLjAuMTolZC8i
LCBzZXJ2ZXIucG9ydCgpXV1dOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwog
CkBAIC0yNjIsNyArMjc0LDY0IEBAIFRFU1QoVExTVmVyc2lvbiwgTmVnb3RpYXRlZExlZ2FjeVRM
UykKIAogICAgIFt3ZWJWaWV3IHJlbW92ZU9ic2VydmVyOm9ic2VydmVyLmdldCgpIGZvcktleVBh
dGg6QCJfbmVnb3RpYXRlZExlZ2FjeVRMUyJdOwogfQotI2VuZGlmCisKKyNlbmRpZiAvLyBIQVZF
KFRMU19QUk9UT0NPTF9WRVJTSU9OX1QpCisKKyNpZiBIQVZFKE5FVFdPUktfRlJBTUVXT1JLKSAm
JiBIQVZFKFRMU19QUk9UT0NPTF9WRVJTSU9OX1QpCisKK1RFU1QoVExTVmVyc2lvbiwgTmF2aWdh
dGVCYWNrKQoreworICAgIEhUVFBTZXJ2ZXIgbGVnYWN5VExTU2VydmVyKHsKKyAgICAgICAgeyAi
LyIsIHsgImhlbGxvIiB9IH0KKyAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHNXaXRo
TGVnYWN5VExTKTsKKworICAgIEhUVFBTZXJ2ZXIgbW9kZXJuVExTU2VydmVyKHsKKyAgICAgICAg
eyAiLyIsIHsgImhlbGxvIiB9IH0KKyAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMp
OworICAgIAorICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHdlYlZpZXdXaXRoTmF2aWdh
dGlvbkRlbGVnYXRlKCk7CisgICAgYXV0byBvYnNlcnZlciA9IGFkb3B0TlMoW1RMU09ic2VydmVy
IG5ld10pOworICAgIFt3ZWJWaWV3IGFkZE9ic2VydmVyOm9ic2VydmVyLmdldCgpIGZvcktleVBh
dGg6QCJfbmVnb3RpYXRlZExlZ2FjeVRMUyIgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0
aW9uTmV3IGNvbnRleHQ6bmlsXTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OmxlZ2FjeVRM
U1NlcnZlci5yZXF1ZXN0KCldOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBfbmVnb3RpYXRl
ZExlZ2FjeVRMU10pOworICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07
CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgX25lZ290aWF0ZWRMZWdhY3lUTFNdKTsKKworICAg
IFt3ZWJWaWV3IGxvYWRSZXF1ZXN0Om1vZGVyblRMU1NlcnZlci5yZXF1ZXN0KCldOworICAgIFtk
ZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisgICAgRVhQRUNUX0ZBTFNFKFt3
ZWJWaWV3IF9uZWdvdGlhdGVkTGVnYWN5VExTXSk7CisKKyAgICBbd2ViVmlldyBnb0JhY2tdOwor
ICAgIFtvYnNlcnZlciB3YWl0VW50aWxOZWdvdGlhdGVkTGVnYWN5VExTQ2hhbmdlZF07CisgICAg
RVhQRUNUX1RSVUUoW3dlYlZpZXcgX25lZ290aWF0ZWRMZWdhY3lUTFNdKTsKKworICAgIFt3ZWJW
aWV3IHJlbW92ZU9ic2VydmVyOm9ic2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJfbmVnb3RpYXRl
ZExlZ2FjeVRMUyJdOworfQorCitURVNUKFRMU1ZlcnNpb24sIFN1YnJlc291cmNlKQoreworICAg
IEhUVFBTZXJ2ZXIgbGVnYWN5VExTU2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsgImhlbGxvIiB9
IH0KKyAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHNXaXRoTGVnYWN5VExTKTsKKwor
ICAgIEhUVFBTZXJ2ZXIgbW9kZXJuVExTU2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsgbWFrZVN0
cmluZygiPHNjcmlwdD5mZXRjaCgnaHR0cHM6Ly8xMjcuMC4wLjE6Iiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGxlZ2FjeVRMU1NlcnZlci5wb3J0KCkpLCAiLycse21vZGU6J25vLWNvcnMnfSk8L3Nj
cmlwdD4iKSB9IH0KKyAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOworICAgIAor
ICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHdlYlZpZXdXaXRoTmF2aWdhdGlvbkRlbGVn
YXRlKCk7CisgICAgYXV0byBvYnNlcnZlciA9IGFkb3B0TlMoW1RMU09ic2VydmVyIG5ld10pOwor
ICAgIFt3ZWJWaWV3IGFkZE9ic2VydmVyOm9ic2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJfbmVn
b3RpYXRlZExlZ2FjeVRMUyIgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNv
bnRleHQ6bmlsXTsKKworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBfbmVnb3RpYXRlZExlZ2Fj
eVRMU10pOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0Om1vZGVyblRMU1NlcnZlci5yZXF1ZXN0
KCldOworICAgIHdoaWxlICghW3dlYlZpZXcgX25lZ290aWF0ZWRMZWdhY3lUTFNdKQorICAgICAg
ICBbb2JzZXJ2ZXIgd2FpdFVudGlsTmVnb3RpYXRlZExlZ2FjeVRMU0NoYW5nZWRdOworCisgICAg
W3dlYlZpZXcgcmVtb3ZlT2JzZXJ2ZXI6b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAIl9uZWdv
dGlhdGVkTGVnYWN5VExTIl07Cit9CisKKyNlbmRpZiAvLyBIQVZFKE5FVFdPUktfRlJBTUVXT1JL
KSAmJiBIQVZFKFRMU19QUk9UT0NPTF9WRVJTSU9OX1QpCiAKIC8vIEZJWE1FOiBBZGQgc29tZSB0
ZXN0cyBmb3IgV0tXZWJWaWV3Lmhhc09ubHlTZWN1cmVDb250ZW50CiAKSW5kZXg6IFRvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5oCShyZXZpc2lvbiAyNTU3NzcpCisrKyBUb29scy9U
ZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyAr
MzgsOCBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiBjbGFzcyBIVFRQU2VydmVyIHsKIHB1
YmxpYzoKICAgICBzdHJ1Y3QgSFRUUFJlc3BvbnNlOwotICAgIEhUVFBTZXJ2ZXIoc3RkOjppbml0
aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxTdHJpbmcsIEhUVFBSZXNwb25zZT4+KTsKKyAgICBlbnVt
IGNsYXNzIFByb3RvY29sIDogdWludDhfdCB7IEh0dHAsIEh0dHBzLCBIdHRwc1dpdGhMZWdhY3lU
TFMgfTsKKyAgICBIVFRQU2VydmVyKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8U3Ry
aW5nLCBIVFRQUmVzcG9uc2U+PiwgUHJvdG9jb2wgPSBQcm90b2NvbDo6SHR0cCk7CiAgICAgdWlu
dDE2X3QgcG9ydCgpIGNvbnN0OwogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCgpIGNvbnN0Owog
ICAgIApAQCAtNDYsNiArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVzcG9uZFRvUmVxdWVz
dHMobndfY29ubmVjdGlvbl90KTsKICAgICAKICAgICBSZXRhaW5QdHI8bndfbGlzdGVuZXJfdD4g
bV9saXN0ZW5lcjsKKyAgICBjb25zdCBQcm90b2NvbCBtX3Byb3RvY29sOwogICAgIGNvbnN0IEhh
c2hNYXA8U3RyaW5nLCBIVFRQUmVzcG9uc2U+IG1fcmVxdWVzdFJlc3BvbnNlTWFwOwogfTsKIApA
QCAtNzQsMyArNzYsNSBAQCBzdHJ1Y3QgSFRUUFNlcnZlcjo6SFRUUFJlc3BvbnNlIHsKIH0gLy8g
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKIAogI2VuZGlmIC8vIEhBVkUoTkVUV09SS19GUkFNRVdP
UkspCisKK1JldGFpblB0cjxTZWNJZGVudGl0eVJlZj4gdGVzdElkZW50aXR5KCk7CkluZGV4OiBU
b29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCShyZXZpc2lvbiAyNTU3NzcpCisr
KyBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0JKHdvcmtpbmcgY29weSkK
QEAgLTMzLDE1ICszMywyOCBAQAogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLUhUVFBT
ZXJ2ZXI6OkhUVFBTZXJ2ZXIoc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxTdHJpbmcs
IEhUVFBSZXNwb25zZT4+IHJlc3BvbnNlcykKLSAgICA6IG1fcmVxdWVzdFJlc3BvbnNlTWFwKFtd
KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8U3RyaW5nLCBIVFRQU2VydmVyOjpIVFRQ
UmVzcG9uc2U+PiBsaXN0KSB7CitIVFRQU2VydmVyOjpIVFRQU2VydmVyKHN0ZDo6aW5pdGlhbGl6
ZXJfbGlzdDxzdGQ6OnBhaXI8U3RyaW5nLCBIVFRQUmVzcG9uc2U+PiByZXNwb25zZXMsIFByb3Rv
Y29sIHByb3RvY29sKQorICAgIDogbV9wcm90b2NvbChwcm90b2NvbCkKKyAgICAsIG1fcmVxdWVz
dFJlc3BvbnNlTWFwKFtdKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8U3RyaW5nLCBI
VFRQU2VydmVyOjpIVFRQUmVzcG9uc2U+PiBsaXN0KSB7CiAgICAgICAgIEhhc2hNYXA8U3RyaW5n
LCBIVFRQU2VydmVyOjpIVFRQUmVzcG9uc2U+IG1hcDsKICAgICAgICAgZm9yIChhdXRvJiBwYWly
IDogbGlzdCkKICAgICAgICAgICAgIG1hcC5hZGQocGFpci5maXJzdCwgcGFpci5zZWNvbmQpOwog
ICAgICAgICByZXR1cm4gbWFwOwogICAgIH0ocmVzcG9uc2VzKSkKIHsKLSAgICBhdXRvIHBhcmFt
ZXRlcnMgPSBhZG9wdE5TKG53X3BhcmFtZXRlcnNfY3JlYXRlX3NlY3VyZV90Y3AoTldfUEFSQU1F
VEVSU19ESVNBQkxFX1BST1RPQ09MLCBOV19QQVJBTUVURVJTX0RFRkFVTFRfQ09ORklHVVJBVElP
TikpOworICAgIGF1dG8gY29uZmlndXJlVExTID0gcHJvdG9jb2wgPT0gUHJvdG9jb2w6Okh0dHAg
PyBOV19QQVJBTUVURVJTX0RJU0FCTEVfUFJPVE9DT0wgOiBeKG53X3Byb3RvY29sX29wdGlvbnNf
dCBwcm90b2NvbE9wdGlvbnMpIHsKKyNpZiBIQVZFKFRMU19QUk9UT0NPTF9WRVJTSU9OX1QpCisg
ICAgICAgIGF1dG8gb3B0aW9ucyA9IGFkb3B0TlMobndfdGxzX2NvcHlfc2VjX3Byb3RvY29sX29w
dGlvbnMocHJvdG9jb2xPcHRpb25zKSk7CisgICAgICAgIGF1dG8gaWRlbnRpdHkgPSBhZG9wdE5T
KHNlY19pZGVudGl0eV9jcmVhdGUodGVzdElkZW50aXR5KCkuZ2V0KCkpKTsKKyAgICAgICAgc2Vj
X3Byb3RvY29sX29wdGlvbnNfc2V0X2xvY2FsX2lkZW50aXR5KG9wdGlvbnMuZ2V0KCksIGlkZW50
aXR5LmdldCgpKTsKKyAgICAgICAgaWYgKHByb3RvY29sID09IFByb3RvY29sOjpIdHRwc1dpdGhM
ZWdhY3lUTFMpCisgICAgICAgICAgICBzZWNfcHJvdG9jb2xfb3B0aW9uc19zZXRfbWF4X3Rsc19w
cm90b2NvbF92ZXJzaW9uKG9wdGlvbnMuZ2V0KCksIHRsc19wcm90b2NvbF92ZXJzaW9uX1RMU3Yx
MCk7CisjZWxzZQorICAgICAgICBVTlVTRURfUEFSQU0ocHJvdG9jb2xPcHRpb25zKTsKKyAgICAg
ICAgQVNTRVJUKHByb3RvY29sICE9IFByb3RvY29sOjpIdHRwc1dpdGhMZWdhY3lUTFMpOworI2Vu
ZGlmCisgICAgfTsKKyAgICBhdXRvIHBhcmFtZXRlcnMgPSBhZG9wdE5TKG53X3BhcmFtZXRlcnNf
Y3JlYXRlX3NlY3VyZV90Y3AoY29uZmlndXJlVExTLCBOV19QQVJBTUVURVJTX0RFRkFVTFRfQ09O
RklHVVJBVElPTikpOwogICAgIG1fbGlzdGVuZXIgPSBhZG9wdE5TKG53X2xpc3RlbmVyX2NyZWF0
ZShwYXJhbWV0ZXJzLmdldCgpKSk7CiAgICAgbndfbGlzdGVuZXJfc2V0X3F1ZXVlKG1fbGlzdGVu
ZXIuZ2V0KCksIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOwogICAgIG53X2xpc3RlbmVyX3Nl
dF9uZXdfY29ubmVjdGlvbl9oYW5kbGVyKG1fbGlzdGVuZXIuZ2V0KCksIF4obndfY29ubmVjdGlv
bl90IGNvbm5lY3Rpb24pIHsKQEAgLTEyNyw3ICsxNDAsMTcgQEAgdWludDE2X3QgSFRUUFNlcnZl
cjo6cG9ydCgpIGNvbnN0CiAKIE5TVVJMUmVxdWVzdCAqSFRUUFNlcnZlcjo6cmVxdWVzdCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVS
TFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwOi8vMTI3LjAuMC4x
OiVkLyIsIHBvcnQoKV1dXTsKKyAgICBOU1N0cmluZyAqZm9ybWF0OworICAgIHN3aXRjaCAobV9w
cm90b2NvbCkgeworICAgIGNhc2UgUHJvdG9jb2w6Okh0dHA6CisgICAgICAgIGZvcm1hdCA9IEAi
aHR0cDovLzEyNy4wLjAuMTolZC8iOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFByb3RvY29s
OjpIdHRwczoKKyAgICBjYXNlIFByb3RvY29sOjpIdHRwc1dpdGhMZWdhY3lUTFM6CisgICAgICAg
IGZvcm1hdCA9IEAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIjsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorICAgIHJldHVybiBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRo
U3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OmZvcm1hdCwgcG9ydCgpXV1dOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>
<flag name="review"
          id="405417"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389833</attachid>
            <date>2020-02-05 11:23:49 -0800</date>
            <delta_ts>2020-02-05 13:03:25 -0800</delta_ts>
            <desc>patch without affecting cache</desc>
            <filename>patch_without_affecting_cache</filename>
            <type>text/plain</type>
            <size>53725</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NTc3OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDIwLTAyLTA1ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBXS1dl
YlZpZXcuX25lZ290aWF0ZWRMZWdhY3lUTFMgYWNjdXJhdGUgd2hlbiBsb2FkaW5nIG1haW4gcmVz
b3VvcmNlIGZyb20gbmV0d29yayBvciBjYWNoZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3MjA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VC
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjppbmNsdWRl
Q2VydGlmaWNhdGVJbmZvIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVzcG9uc2VCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFz
ZTo6dXNlZExlZ2FjeVRMUyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlQmFzZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2VCYXNlOjpkZWNvZGUpOgorCiAyMDIwLTAyLTA0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IGludGVybmFsIGJ1aWxkIGFmdGVyIHIy
NTU3MDkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNw
b25zZUJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCShyZXZpc2lvbiAyNTU3NzcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYxLDExICsyNjEsMTIgQEAKICAgICBtX3R5cGUgPSB0eXBlOwogfQogCi12
b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjppbmNsdWRlQ2VydGlmaWNhdGVJbmZvKCkgY29uc3QK
K3ZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8oVXNlZExl
Z2FjeVRMUyB1c2VkTGVnYWN5VExTKSBjb25zdAogewogICAgIGlmIChtX2NlcnRpZmljYXRlSW5m
bykKICAgICAgICAgcmV0dXJuOwogICAgIG1fY2VydGlmaWNhdGVJbmZvID0gc3RhdGljX2Nhc3Q8
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSo+KHRoaXMpLT5wbGF0Zm9ybUNlcnRpZmljYXRlSW5mbygp
OworICAgIG1fdXNlZExlZ2FjeVRMUyA9IHVzZWRMZWdhY3lUTFM7CiB9CiAKIFN0cmluZyBSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6c3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJh
c2UuaAkocmV2aXNpb24gMjU1Nzc3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw4IEBA
CiAKIGJvb2wgaXNTY3JpcHRBbGxvd2VkQnlOb3NuaWZmKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KTsKIAorZW51bSBjbGFzcyBVc2VkTGVnYWN5VExTIDogYm9vbCB7IE5vLCBZZXMgfTsKKwogLy8g
RG8gbm90IHVzZSB0aGlzIGNsYXNzIGRpcmVjdGx5LCB1c2UgdGhlIGNsYXNzIFJlc291cmNlUmVz
cG9uc2UgaW5zdGVhZAogY2xhc3MgUmVzb3VyY2VSZXNwb25zZUJhc2UgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwpAQCAtMTI3LDggKzEyOSw5IEBACiAgICAgV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFN0cmluZyBzYW5pdGl6ZVN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpOwogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbmNsdWRlQ2VydGlmaWNhdGVJbmZvKCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbmNsdWRlQ2VydGlmaWNhdGVJbmZvKFVzZWRMZWdhY3lU
TFMgPSBVc2VkTGVnYWN5VExTOjpObykgY29uc3Q7CiAgICAgY29uc3QgT3B0aW9uYWw8Q2VydGlm
aWNhdGVJbmZvPiYgY2VydGlmaWNhdGVJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9jZXJ0aWZpY2F0
ZUluZm87IH07CisgICAgYm9vbCB1c2VkTGVnYWN5VExTKCkgY29uc3QgeyByZXR1cm4gbV91c2Vk
TGVnYWN5VExTID09IFVzZWRMZWdhY3lUTFM6OlllczsgfQogICAgIAogICAgIC8vIFRoZXNlIGZ1
bmN0aW9ucyByZXR1cm4gcGFyc2VkIHZhbHVlcyBvZiB0aGUgY29ycmVzcG9uZGluZyByZXNwb25z
ZSBoZWFkZXJzLgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY2FjaGVDb250cm9sQ29udGFpbnNO
b0NhY2hlKCkgY29uc3Q7CkBAIC0yNDYsNyArMjQ5LDggQEAKICAgICBib29sIG1faXNSYW5nZVJl
cXVlc3RlZCB7IGZhbHNlIH07CiAKIHByb3RlY3RlZDoKLSAgICBpbnQgbV9odHRwU3RhdHVzQ29k
ZSB7IDAgfTsKKyAgICBzaG9ydCBtX2h0dHBTdGF0dXNDb2RlIHsgMCB9OworICAgIG11dGFibGUg
VXNlZExlZ2FjeVRMUyBtX3VzZWRMZWdhY3lUTFMgeyBVc2VkTGVnYWN5VExTOjpObyB9OwogfTsK
IAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBhLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiBiKSB7IHJldHVybiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y29t
cGFyZShhLCBiKTsgfQpAQCAtMjY4LDEyICsyNzIsMTQgQEAKICAgICBlbmNvZGVyIDw8IG1faHR0
cFZlcnNpb247CiAgICAgZW5jb2RlciA8PCBtX2h0dHBIZWFkZXJGaWVsZHM7CiAKLSAgICAvLyBX
ZSBkb24ndCB3YW50IHRvIHB1dCB0aGUgbmV0d29ya0xvYWRNZXRyaWNzIGluZm8KKyAgICAvLyBX
ZSBkb24ndCB3YW50IHRvIHB1dCB0aGUgbmV0d29ya0xvYWRNZXRyaWNzIGluZm8gb3IgVExTIHZl
cnNpb24KICAgICAvLyBpbnRvIHRoZSBkaXNrIGNhY2hlLCBiZWNhdXNlIHdlIHdpbGwgbmV2ZXIg
dXNlIHRoZSBvbGQgaW5mby4KLSAgICBpZiAoRW5jb2Rlcjo6aXNJUENFbmNvZGVyKQorICAgIGlm
IGNvbnN0ZXhwciAoRW5jb2Rlcjo6aXNJUENFbmNvZGVyKSB7CiAgICAgICAgIGVuY29kZXIgPDwg
bV9uZXR3b3JrTG9hZE1ldHJpY3M7CisgICAgICAgIGVuY29kZXIgPDwgbV91c2VkTGVnYWN5VExT
OworICAgIH0KIAotICAgIGVuY29kZXIgPDwgbV9odHRwU3RhdHVzQ29kZTsKKyAgICBlbmNvZGVy
IDw8IHN0YXRpY19jYXN0PGludD4obV9odHRwU3RhdHVzQ29kZSk7CiAgICAgZW5jb2RlciA8PCBt
X2NlcnRpZmljYXRlSW5mbzsKICAgICBlbmNvZGVyLmVuY29kZUVudW0obV9zb3VyY2UpOwogICAg
IGVuY29kZXIuZW5jb2RlRW51bShtX3R5cGUpOwpAQCAtMzEwLDExICszMTYsMTcgQEAKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzcG9uc2UubV9odHRw
SGVhZGVyRmllbGRzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIC8vIFRoZSBuZXR3b3Jr
TG9hZE1ldHJpY3MgaW5mbyBpcyBvbmx5IHNlbmQgb3ZlciBJUEMgYW5kIG5vdCBzdG9yZWQgaW4g
ZGlzayBjYWNoZS4KLSAgICBpZiAoRGVjb2Rlcjo6aXNJUENEZWNvZGVyICYmICFkZWNvZGVyLmRl
Y29kZShyZXNwb25zZS5tX25ldHdvcmtMb2FkTWV0cmljcykpCisgICAgLy8gVGhlIG5ldHdvcmtM
b2FkTWV0cmljcyBpbmZvIGFuZCBUTFMgdmVyc2lvbiBhcmUgb25seSBzZW5kIG92ZXIgSVBDIGFu
ZCBub3Qgc3RvcmVkIGluIGRpc2sgY2FjaGUuCisgICAgaWYgY29uc3RleHByIChEZWNvZGVyOjpp
c0lQQ0RlY29kZXIpIHsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNwb25zZS5tX25l
dHdvcmtMb2FkTWV0cmljcykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVzcG9uc2UubV91c2VkTGVnYWN5VExTKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaW50IGh0dHBTdGF0dXNDb2RlOworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoaHR0cFN0YXR1c0NvZGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNwb25zZS5tX2h0dHBTdGF0dXNDb2RlKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIHJlc3BvbnNlLm1faHR0cFN0YXR1c0NvZGUgPSBodHRwU3Rh
dHVzQ29kZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3BvbnNlLm1fY2VydGlmaWNhdGVJ
bmZvKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVt
KHJlc3BvbnNlLm1fc291cmNlKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTU3NzcpCisrKyBT
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcwIEBACisy
MDIwLTAyLTA1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgTWFrZSBXS1dlYlZpZXcuX25lZ290aWF0ZWRMZWdhY3lUTFMgYWNjdXJhdGUgd2hl
biBsb2FkaW5nIG1haW4gcmVzb3VvcmNlIGZyb20gbmV0d29yayBvciBjYWNoZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3MjA3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gUGFnZUxvYWRTdGF0ZTo6
ZGlkQ29tbWl0TG9hZCwgSSB3YXMgcmVzZXR0aW5nIHRoZSB2YWx1ZSBvZiBfbmVnb3RpYXRlZExl
Z2FjeVRMUyB0byBmYWxzZS4KKyAgICAgICAgVGhhdCBjcmVhdGVkIGEgcmFjZSBjb25kaXRpb24g
d2hlbiBsb2FkaW5nIHRoZSBtYWluIHJlc291cmNlIGJlY2F1c2UgdGhlIE5ldHdvcmtQcm9jZXNz
IHdvdWxkCisgICAgICAgIG1lc3NhZ2UgdGhlIFVJUHJvY2VzcyBzZXR0aW5nIF9uZWdvdGlhdGVk
TGVnYWN5VExTIHRvIGZhbHNlLCB3aGlsZSB0aGUgTmV0d29ya1Byb2Nlc3Mgd291bGQKKyAgICAg
ICAgbWVzc2FnZSB0aGUgV2ViUHJvY2VzcyB3aGljaCB3b3VsZCBtZXNzYWdlIHRoZSBVSVByb2Nl
c3MgdG8gY2FsbCBQYWdlTG9hZFN0YXRlOjpkaWRDb21taXRMb2FkCisgICAgICAgIHdoaWNoIHdv
dWxkIHJlc2V0IGl0IHRvIGZhbHNlLiAgTm93IGl0IHJlc2V0cyBpdCB0byB0aGUgY29ycmVjdCB2
YWx1ZSwgd2hhdGV2ZXIgaXQgaXMuCisKKyAgICAgICAgSXQgd2FzIGRlY2lkZWQgdGhhdCB3ZSB3
b24ndCBwZXJzaXN0IHRoZSBUTFMgdmVyc2lvbiBpbiB0aGUgZGlzayBjYWNoZSwgc28gbG9hZGlu
ZyBmcm9tIHRoZSBkaXNrCisgICAgICAgIGNhY2hlIHdpbGwgbm90IGNoYW5nZSB0aGUgX25lZ290
aWF0ZWRMZWdhY3lUTFMgdmFsdWUsIGV2ZW4gaWYgdGhlIG9yaWdpbmFsIHJlc291cmNlIHdhcyBs
b2FkZWQgb3ZlcgorICAgICAgICBUTFMgMS4wIG9yIDEuMS4gIFRoaXMgd2lsbCByZXN1bHQgaW4g
dXNlcnMgc29tZXRpbWVzIHNlZWluZyBfbmVnb3RpYXRlZExlZ2FjeVRMUyBpbmNvbnNpc3RlbnQs
CisgICAgICAgIGJ1dCBpdCBhdm9pZHMgc29tZSBwcm9ibGVtcyB3aXRoIG5vdCBiZWluZyBhYmxl
IHRvIGRldGVjdCBzZXJ2ZXIgdXBncmFkZXMgd2l0aG91dCBjb25uZWN0aW5nIHRvIHRoZSBzZXJ2
ZXIuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gbm90IGluY3JlYXNlIHRoZSBtZW1vcnkgZm9vdHBy
aW50IG9mIFJlc291cmNlUmVzcG9uc2UsIEkgY2hhbmdlZCBtX2h0dHBTdGF0dXNDb2RlIGZyb20K
KyAgICAgICAgYW4gaW50IHRvIGEgc2hvcnQuICBJdCBqdXN0IG5lZWRzIHRvIGJlIGFibGUgdG8g
Y292ZXIgdGhlIHZhbHVlcyAwLTYwMCBvciBzbywgd2hpY2ggcmVhbGx5IG9ubHkgbmVlZHMgMTAg
Yml0cy4KKyAgICAgICAgVGhlIHNlcmlhbGl6YXRpb24gY29kZSBjaGFuZ2UgaGFzIGJlZW4gd3Jp
dHRlbiB0byBtYWludGFpbiBjb21wYXRpYmlsaXR5IHdpdGggZXhpc3RpbmcgZGlzayBjYWNoZXMu
CisKKyAgICAgICAgQ292ZXJlZCBieSBuZXcgQVBJIHRlc3RzLgorCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtEYXRhVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0RhdGFUYXNrOjpuZWdvdGlhdGVkTGVnYWN5VExTIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0RhdGFUYXNrQ2xpZW50OjpuZWdvdGlhdGVkTGVnYWN5VExTIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQmxvYjo6ZGlzcGF0Y2hEaWRSZWNl
aXZlUmVzcG9uc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpub3RpZnlEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6dGhyb3R0bGVEZWxheUNvbXBsZXRlZCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpuZWdvdGlhdGVkTGVnYWN5VExTIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL1BpbmdMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGluZ0xvYWQ6OmRpZFJl
Y2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgor
ICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjpkYXRhVGFzazpk
aWRSZWNlaXZlUmVzcG9uc2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrQ3VybDo6aW52b2tlRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSk6
CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpQYWdlTG9hZFN0YXRlOjpkaWRDb21taXRMb2FkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFn
ZUxvYWRTdGF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDb21taXRMb2Fk
Rm9yRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmNvbW1pdFByb3Zpc2lvbmFsUGFnZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkQ29tbWl0TG9hZCk6CisKIDIwMjAtMDItMDQgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hv
cnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgbWFjQ2F0YWx5c3Q6IFNob3VsZG4ndCBnZXQgdGV4
dCBjdXJzb3Igb24gY2hlY2tib3hlcwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAkocmV2
aXNpb24gMjU1Nzc3KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09S
U1ByZWZsaWdodENoZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAK
ICAgICBtX25ldHdvcmtQcm9jZXNzLT5hdXRoZW50aWNhdGlvbk1hbmFnZXIoKS5kaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UobV9wYXJhbWV0ZXJzLnNlc3Npb25JRCwgbV9wYXJhbWV0
ZXJzLndlYlBhZ2VQcm94eUlELCBtX3BhcmFtZXRlcnMudG9wT3JpZ2luID8gJm1fcGFyYW1ldGVy
cy50b3BPcmlnaW4tPmRhdGEoKSA6IG51bGxwdHIsIGNoYWxsZW5nZSwgbmVnb3RpYXRlZExlZ2Fj
eVRMUywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtDT1JT
UHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJlY2VpdmVSZXNw
b25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0ZWRMZWdh
Y3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2UiKTsKIApJbmRl
eDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNr
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
T1JTUHJlZmxpZ2h0Q2hlY2tlci5oCShyZXZpc2lvbiAyNTU3NzcpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC02OSw3ICs2OSw3IEBACiBwcml2YXRlOgogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQ
UmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lk
IGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwg
TmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRM
UywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlk
Q29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkU2VuZERhdGEo
dWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2Vu
ZCkgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFzay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrRGF0YVRhc2suY3BwCShyZXZpc2lvbiAyNTU3NzcpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3LDcgKzk3
LDcgQEAKICAgICBtX2ZhaWx1cmVUaW1lci5zdGFydE9uZVNob3QoMF9zKTsKIH0KIAotdm9pZCBO
ZXR3b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVz
cG9uc2UsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgTmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYm
IHJlc3BvbnNlLCBOZWdvdGlhdGVkTGVnYWN5VExTIG5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3Bv
bnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAocmVz
cG9uc2UuaXNIVFRQMDkoKSkgewogICAgICAgICBhdXRvIHVybCA9IHJlc3BvbnNlLnVybCgpOwpA
QCAtMTExLDE3ICsxMTEsMTEgQEAKICAgICAgICAgfQogICAgIH0KICAgICBpZiAobV9jbGllbnQp
Ci0gICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgbV9jbGllbnQtPmRpZFJlY2Vp
dmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgbmVnb3RpYXRlZExlZ2FjeVRMUywgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIGVsc2UKICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUpOwogfQogCi12b2lkIE5ldHdvcmtEYXRhVGFzazo6bmVn
b3RpYXRlZExlZ2FjeVRMUygpIGNvbnN0Ci17Ci0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBt
X2NsaWVudC0+bmVnb3RpYXRlZExlZ2FjeVRMUygpOwotfQotCiBib29sIE5ldHdvcmtEYXRhVGFz
azo6c2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV9jbGllbnQgPyBtX2NsaWVudC0+c2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRN
ZXRyaWNzKCkgOiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0RhdGFUYXNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrRGF0YVRhc2suaAkocmV2aXNpb24gMjU1Nzc3KQorKysgU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyAr
NjIsNyBAQAogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVj
dGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBO
ZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlh
dGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWlu
dDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSA9IDA7CkBAIC03MCw3ICs3MCw2IEBACiAg
ICAgdmlydHVhbCB2b2lkIGNhbm5vdFNob3dVUkwoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdh
c0Jsb2NrZWRCeVJlc3RyaWN0aW9ucygpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBuZWdvdGlh
dGVkTGVnYWN5VExTKCkgY29uc3QgeyB9CiAgICAgdmlydHVhbCBib29sIHNob3VsZENhcHR1cmVF
eHRyYU5ldHdvcmtMb2FkTWV0cmljcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2
b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVy
cm9yKQpAQCAtOTIsOCArOTEsNyBAQAogICAgIHZpcnR1YWwgdm9pZCByZXN1bWUoKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVBbmRDYW5jZWwoKSA9IDA7CiAKLSAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXImJik7Ci0gICAgdm9pZCBuZWdvdGlhdGVkTGVnYWN5VExTKCkgY29uc3Q7
CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpOwogICAg
IGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkgY29uc3Q7CiAKICAg
ICBlbnVtIGNsYXNzIFN0YXRlIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAkocmV2aXNpb24gMjU1Nzc3KQorKysg
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjkwLDcgKzI5MCw3IEBACiAgICAgICAgIGJyZWFrOwogICAgIH0KIAot
ICAgIGRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBlcnJvckNvZGVdKFBvbGljeUFjdGlvbiBw
b2xpY3lBY3Rpb24pIHsKKyAgICBkaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSks
IE5lZ290aWF0ZWRMZWdhY3lUTFM6Ok5vLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUo
cHJvdGVjdGVkVGhpcyksIGVycm9yQ29kZV0oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgewog
ICAgICAgICBMT0coTmV0d29ya1Nlc3Npb24sICIlcCAtIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRp
ZFJlY2VpdmVSZXNwb25zZSBjb21wbGV0aW9uSGFuZGxlciAoJXUpIiwgdGhpcywgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHBvbGljeUFjdGlvbikpOwogCiAgICAgICAgIGlmIChtX3N0YXRlID09IFN0
YXRlOjpDYW5jZWxpbmcgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6Q29tcGxldGVkKSB7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAkocmV2aXNpb24g
MjU1Nzc3KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIwNiwxMyArMjA2LDggQEAKICAgICAgICAgbV9uZXR3b3JrUHJv
Y2Vzcy0+YXV0aGVudGljYXRpb25NYW5hZ2VyKCkuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKG1fdGFzay0+c2Vzc2lvbklEKCksIG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCwg
bV9wYXJhbWV0ZXJzLnRvcE9yaWdpbiA/ICZtX3BhcmFtZXRlcnMudG9wT3JpZ2luLT5kYXRhKCkg
OiBudWxscHRyLCBjaGFsbGVuZ2UsIG5lZ290aWF0ZWRMZWdhY3lUTFMsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBOZXR3b3JrTG9hZDo6bmVnb3RpYXRlZExlZ2FjeVRM
UygpIGNvbnN0Cit2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VS
ZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVkTGVnYWN5VExTIG5lZ290aWF0ZWRMZWdhY3lU
TFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAg
ICBtX25ldHdvcmtQcm9jZXNzLT5hdXRoZW50aWNhdGlvbk1hbmFnZXIoKS5uZWdvdGlhdGVkTGVn
YWN5VExTKG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCk7Ci19Ci0KLXZvaWQgTmV0d29ya0xv
YWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3Bv
bnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKICAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwogICAgIEFTU0VSVCghbV90aHJvdHRsZSk7CiAKQEAgLTIyNiwx
NiArMjIxLDE5IEBACiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBub3RpZnlEaWRSZWNl
aXZlUmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKKyAgICBpZiAobmVnb3RpYXRlZExlZ2FjeVRMUyA9PSBOZWdvdGlhdGVkTGVnYWN5VExTOjpZ
ZXMpCisgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLm5l
Z290aWF0ZWRMZWdhY3lUTFMobV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlEKTsKKyAgICAKKyAg
ICBub3RpZnlEaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSksIG5lZ290aWF0ZWRM
ZWdhY3lUTFMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBOZXR3b3Jr
TG9hZDo6bm90aWZ5RGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25z
ZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBO
ZXR3b3JrTG9hZDo6bm90aWZ5RGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiBy
ZXNwb25zZSwgTmVnb3RpYXRlZExlZ2FjeVRMUyBuZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25z
ZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIHJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJlc3Bv
bnNlOjpTb3VyY2U6Ok5ldHdvcmspOwogICAgIGlmIChtX3BhcmFtZXRlcnMubmVlZHNDZXJ0aWZp
Y2F0ZUluZm8pCi0gICAgICAgIHJlc3BvbnNlLmluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8oKTsKKyAg
ICAgICAgcmVzcG9uc2UuaW5jbHVkZUNlcnRpZmljYXRlSW5mbyhuZWdvdGlhdGVkTGVnYWN5VExT
ID09IE5lZ290aWF0ZWRMZWdhY3lUTFM6OlllcyA/IFVzZWRMZWdhY3lUTFM6OlllcyA6IFVzZWRM
ZWdhY3lUTFM6Ok5vKTsKIAogICAgIG1fY2xpZW50LmdldCgpLmRpZFJlY2VpdmVSZXNwb25zZShX
VEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQpAQCAtMjY1
LDcgKzI2Myw3IEBACiAKICAgICBhdXRvIHRocm90dGxlID0gV1RGTW92ZShtX3Rocm90dGxlKTsK
IAotICAgIG5vdGlmeURpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHRocm90dGxlLT5yZXNwb25z
ZSksIFdURk1vdmUodGhyb3R0bGUtPnJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBu
b3RpZnlEaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZSh0aHJvdHRsZS0+cmVzcG9uc2UpLCBOZWdv
dGlhdGVkTGVnYWN5VExTOjpObywgV1RGTW92ZSh0aHJvdHRsZS0+cmVzcG9uc2VDb21wbGV0aW9u
SGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtMb2FkOjpkaWRTZW5kRGF0YSh1aW50NjRfdCB0
b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKQpJbmRleDog
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAkocmV2aXNpb24gMjU1
Nzc3KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBACiAgICAgLy8gTmV0d29ya0RhdGFUYXNrQ2xpZW50
CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25I
YW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VD
b21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikg
ZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYp
IGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmlu
YWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0
X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKQEAgLTgxLDkgKzgxLDggQEAKICAg
ICB2b2lkIHdhc0Jsb2NrZWQoKSBmaW5hbDsKICAgICB2b2lkIGNhbm5vdFNob3dVUkwoKSBmaW5h
bDsKICAgICB2b2lkIHdhc0Jsb2NrZWRCeVJlc3RyaWN0aW9ucygpIGZpbmFsOwotICAgIHZvaWQg
bmVnb3RpYXRlZExlZ2FjeVRMUygpIGNvbnN0IGZpbmFsOwogCi0gICAgdm9pZCBub3RpZnlEaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBs
ZXRpb25IYW5kbGVyJiYpOworICAgIHZvaWQgbm90aWZ5RGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21w
bGV0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIHRocm90dGxlRGVsYXlDb21wbGV0ZWQoKTsKIAog
ICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8TmV0d29ya0xvYWRDbGllbnQ+IG1fY2xpZW50OwpJ
bmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5oCShyZXZpc2lvbiAyNTU3NzcpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1
NSw4IEBACiBjbGFzcyBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOwogY2xhc3MgV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOwogCitlbnVtIGNsYXNzIE5lZ290aWF0ZWRMZWdhY3lUTFMgOiBib29sOworCiBz
dHJ1Y3QgUmVzb3VyY2VMb2FkSW5mbzsKIAogbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcAkocmV2aXNpb24gMjU1
Nzc3KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE2MCw3ICsxNjAsNyBAQAogICAgIGRpZEZpbmlzaChSZXNvdXJjZUVycm9y
IHsgU3RyaW5nKCksIDAsIGN1cnJlbnRVUkwoKSwgIkZhaWxlZCBIVFRQIGF1dGhlbnRpY2F0aW9u
Il9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9sIH0pOwogfQogCi12b2lkIFBp
bmdMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBS
ZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFBpbmdM
b2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdv
dGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNl
IC0gaHR0cFN0YXR1c0NvZGU6ICVkIiwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7CiAgICAg
YXV0byB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgJKHJldmlzaW9uIDI1NTc3NykKKysrIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMs
NyBAQAogCiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBs
ZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJD
b3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFs
bGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXImJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5k
bGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNz
JikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwg
dWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFz
a0NvY29hLmgJKHJldmlzaW9uIDI1NTc3NykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyAr
NTQsNyBAQAogICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVp
bnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hh
bGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdh
Y3lUTFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgZGlkQ29tcGxl
dGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5l
Z290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJik7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKIAogICAgIHZv
aWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYm
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFU
YXNrQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQkocmV2aXNpb24gMjU1Nzc3KQorKysgU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzczLDEwICszNzMsMTAgQEAKICAgICAgICAgbV9jbGllbnQtPmRpZFJl
Y2VpdmVEYXRhKFdURk1vdmUoZGF0YSkpOwogfQogCi12b2lkIE5ldHdvcmtEYXRhVGFza0NvY29h
OjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNl
LCBXZWJLaXQ6OlJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0ZWRMZWdhY3lUTFMgbmVnb3RpYXRl
ZExlZ2FjeVRMUywgV2ViS2l0OjpSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgRU1JVF9TSUdOUE9TVChtX3Rhc2ssICJyZWNlaXZlZCByZXNwb25z
ZSBoZWFkZXJzIik7Ci0gICAgTmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoV1RG
TW92ZShyZXNwb25zZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBOZXR3b3Jr
RGF0YVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgbmVnb3RpYXRl
ZExlZ2FjeVRMUywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdv
cmtEYXRhVGFza0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVy
KQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQkocmV2aXNpb24gMjU1Nzc3KQorKysgU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC04MTgsMTIgKzgxOCwxMiBAQAogICAgIGlmIChhdXRvKiBuZXR3b3JrRGF0YVRh
c2sgPSBbc2VsZiBleGlzdGluZ1Rhc2s6ZGF0YVRhc2tdKSB7CiAgICAgICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CiAKLSAgICAgICAgYm9vbCBuZWdvdGlhdGVkTGVnYWN5VExTID0gZmFs
c2U7CisgICAgICAgIE5lZ290aWF0ZWRMZWdhY3lUTFMgbmVnb3RpYXRlZExlZ2FjeVRMUyA9IE5l
Z290aWF0ZWRMZWdhY3lUTFM6Ok5vOwogI2lmIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkK
ICAgICAgICAgTlNVUkxTZXNzaW9uVGFza1RyYW5zYWN0aW9uTWV0cmljcyAqbWV0cmljcyA9IGRh
dGFUYXNrLl9pbmNvbXBsZXRlVGFza01ldHJpY3MudHJhbnNhY3Rpb25NZXRyaWNzLmxhc3RPYmpl
Y3Q7CiAgICAgICAgIGF1dG8gdGxzVmVyc2lvbiA9ICh0bHNfcHJvdG9jb2xfdmVyc2lvbl90KW1l
dHJpY3MubmVnb3RpYXRlZFRMU1Byb3RvY29sVmVyc2lvbi51bnNpZ25lZFNob3J0VmFsdWU7CiAg
ICAgICAgIGlmICh0bHNWZXJzaW9uID09IHRsc19wcm90b2NvbF92ZXJzaW9uX1RMU3YxMCB8fCB0
bHNWZXJzaW9uID09IHRsc19wcm90b2NvbF92ZXJzaW9uX1RMU3YxMSkKLSAgICAgICAgICAgIG5l
Z290aWF0ZWRMZWdhY3lUTFMgPSB0cnVlOworICAgICAgICAgICAgbmVnb3RpYXRlZExlZ2FjeVRM
UyA9IE5lZ290aWF0ZWRMZWdhY3lUTFM6OlllczsKICAgICAgICAgVU5VU0VEX1BBUkFNKG1ldHJp
Y3MpOwogI2Vsc2UgLy8gV2UgZG8gbm90IG5lZWQgdG8gY2hlY2sgX1RMU05lZ290aWF0ZWRQcm90
b2NvbFZlcnNpb24gaWYgd2UgaGF2ZSBtZXRyaWNzLm5lZ290aWF0ZWRUTFNQcm90b2NvbFZlcnNp
b24gYmVjYXVzZSBpdCB3b3JrcyBhdCByZXNwb25zZSB0aW1lIGV2ZW4gYmVmb3JlIHJkYXI6Ly9w
cm9ibGVtLzU2NTIyNjAxCiAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JF
R0lOCkBAIC04MzAsMTIgKzgzMCwxMCBAQAogICAgICAgICBpZiAoW2RhdGFUYXNrIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IoX1RMU05lZ290aWF0ZWRQcm90b2NvbFZlcnNpb24pXSkgewog
ICAgICAgICAgICAgU1NMUHJvdG9jb2wgdGxzVmVyc2lvbiA9IFtkYXRhVGFzayBfVExTTmVnb3Rp
YXRlZFByb3RvY29sVmVyc2lvbl07CiAgICAgICAgICAgICBpZiAodGxzVmVyc2lvbiA9PSBrVExT
UHJvdG9jb2wxMSB8fCB0bHNWZXJzaW9uID09IGtUTFNQcm90b2NvbDEpCi0gICAgICAgICAgICAg
ICAgbmVnb3RpYXRlZExlZ2FjeVRMUyA9IHRydWU7CisgICAgICAgICAgICAgICAgbmVnb3RpYXRl
ZExlZ2FjeVRMUyA9IE5lZ290aWF0ZWRMZWdhY3lUTFM6OlllczsKICAgICAgICAgfQogICAgICAg
ICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICNlbmRpZgotICAgICAgICBpZiAo
bmVnb3RpYXRlZExlZ2FjeVRMUykKLSAgICAgICAgICAgIG5ldHdvcmtEYXRhVGFzay0+bmVnb3Rp
YXRlZExlZ2FjeVRMUygpOwogICAgICAgICAKICAgICAgICAgLy8gQXZvaWQgTUlNRSB0eXBlIHNu
aWZmaW5nIGlmIHRoZSByZXNwb25zZSBjb21lcyBiYWNrIGFzIDMwNCBOb3QgTW9kaWZpZWQuCiAg
ICAgICAgIGludCBzdGF0dXNDb2RlID0gW3Jlc3BvbnNlIGlzS2luZE9mQ2xhc3M6TlNIVFRQVVJM
UmVzcG9uc2UuY2xhc3NdID8gWyhOU0hUVFBVUkxSZXNwb25zZSAqKXJlc3BvbnNlIHN0YXR1c0Nv
ZGVdIDogMDsKQEAgLTg1NCw3ICs4NTIsNyBAQAogICAgICAgICBjb3B5VGltaW5nRGF0YShbZGF0
YVRhc2sgX3RpbWluZ0RhdGFdLCByZXNvdXJjZVJlc3BvbnNlLmRlcHJlY2F0ZWROZXR3b3JrTG9h
ZE1ldHJpY3MoKSk7CiAKICAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBCbG9j
a19jb3B5KGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICAgICAgbmV0d29ya0RhdGFUYXNrLT5kaWRS
ZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShyZXNvdXJjZVJlc3BvbnNlKSwgW2NvbXBsZXRpb25IYW5k
bGVyQ29weSwgdGFza0lkZW50aWZpZXJdKFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rp
b24pIHsKKyAgICAgICAgbmV0d29ya0RhdGFUYXNrLT5kaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92
ZShyZXNvdXJjZVJlc3BvbnNlKSwgbmVnb3RpYXRlZExlZ2FjeVRMUywgW2NvbXBsZXRpb25IYW5k
bGVyQ29weSwgdGFza0lkZW50aWZpZXJdKFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rp
b24pIHsKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgICAgICAgICBMT0coTmV0d29ya1Nlc3Npb24s
ICIlbGx1IGRpZFJlY2VpdmVSZXNwb25zZSBjb21wbGV0aW9uSGFuZGxlciAoJWQpIiwgdGFza0lk
ZW50aWZpZXIsIHBvbGljeUFjdGlvbik7CiAjZWxzZQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAko
cmV2aXNpb24gMjU1Nzc3KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05l
dHdvcmtEYXRhVGFza0N1cmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjQsNyArMjI0LDcgQEAK
IAogdm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjppbnZva2VEaWRSZWNlaXZlUmVzcG9uc2UoKQog
ewotICAgIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlKG1fcmVzcG9uc2UpLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShQb2xpY3lBY3Rpb24gcG9saWN5
QWN0aW9uKSB7CisgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UobV9yZXNw
b25zZSksIE5lZ290aWF0ZWRMZWdhY3lUTFM6Ok5vLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpXShQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKSB7CiAgICAgICAgIGlmICht
X3N0YXRlID09IFN0YXRlOjpDYW5jZWxpbmcgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6Q29tcGxldGVk
KQogICAgICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCShyZXZpc2lv
biAyNTU3NzcpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0Rh
dGFUYXNrU291cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3OCw3ICszNzgsNyBAQAogICAgIGRl
cHJlY2F0ZWRSZXNwb25zZU1ldHJpY3MucmVxdWVzdFN0YXJ0ID0gbV9uZXR3b3JrTG9hZE1ldHJp
Y3MucmVxdWVzdFN0YXJ0OwogICAgIGRlcHJlY2F0ZWRSZXNwb25zZU1ldHJpY3MucmVzcG9uc2VT
dGFydCA9IG1fbmV0d29ya0xvYWRNZXRyaWNzLnJlc3BvbnNlU3RhcnQ7CiAKLSAgICBkaWRSZWNl
aXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZShtX3Jlc3BvbnNlKSwgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgeworICAg
IGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlKG1fcmVzcG9uc2UpLCBOZWdvdGlh
dGVkTGVnYWN5VExTOjpObywgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0o
UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgewogICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0
ZTo6Q2FuY2VsaW5nIHx8IG1fc3RhdGUgPT0gU3RhdGU6OkNvbXBsZXRlZCkgewogICAgICAgICAg
ICAgY2xlYXJSZXF1ZXN0KCk7CiAgICAgICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmNwcAkocmV2aXNpb24gMjU1Nzc3KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMxNyw3ICszMTcsNyBAQAogICAgIG1fdW5jb21taXR0ZWRTdGF0ZS51bnJlYWNoYWJsZVVSTCA9
IG1fbGFzdFVucmVhY2hhYmxlVVJMOwogfQogCi12b2lkIFBhZ2VMb2FkU3RhdGU6OmRpZENvbW1p
dExvYWQoY29uc3QgVHJhbnNhY3Rpb246OlRva2VuJiB0b2tlbiwgV2ViQ2VydGlmaWNhdGVJbmZv
JiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgaGFzSW5zZWN1cmVDb250ZW50KQordm9pZCBQYWdlTG9h
ZFN0YXRlOjpkaWRDb21taXRMb2FkKGNvbnN0IFRyYW5zYWN0aW9uOjpUb2tlbiYgdG9rZW4sIFdl
YkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBib29sIGhhc0luc2VjdXJlQ29udGVu
dCwgYm9vbCB1c2VkTGVnYWN5VExTKQogewogICAgIEFTU0VSVF9VTlVTRUQodG9rZW4sICZ0b2tl
bi5tX3BhZ2VMb2FkU3RhdGUgPT0gdGhpcyk7CiAgICAgQVNTRVJUKG1fdW5jb21taXR0ZWRTdGF0
ZS5zdGF0ZSA9PSBTdGF0ZTo6UHJvdmlzaW9uYWwpOwpAQCAtMzI4LDcgKzMyOCw3IEBACiAKICAg
ICBtX3VuY29tbWl0dGVkU3RhdGUudXJsID0gbV91bmNvbW1pdHRlZFN0YXRlLnByb3Zpc2lvbmFs
VVJMOwogICAgIG1fdW5jb21taXR0ZWRTdGF0ZS5wcm92aXNpb25hbFVSTCA9IFN0cmluZygpOwot
ICAgIG1fdW5jb21taXR0ZWRTdGF0ZS5uZWdvdGlhdGVkTGVnYWN5VExTID0gZmFsc2U7CisgICAg
bV91bmNvbW1pdHRlZFN0YXRlLm5lZ290aWF0ZWRMZWdhY3lUTFMgPSB1c2VkTGVnYWN5VExTOwog
CiAgICAgbV91bmNvbW1pdHRlZFN0YXRlLnRpdGxlID0gU3RyaW5nKCk7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5oCShyZXZpc2lvbiAyNTU3NzcpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE2Myw3ICsxNjMsNyBAQAogICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJv
dmlzaW9uYWxMb2FkKGNvbnN0IFRyYW5zYWN0aW9uOjpUb2tlbiYsIGNvbnN0IFN0cmluZyYgdXJs
KTsKICAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgVHJhbnNhY3Rpb246OlRv
a2VuJik7CiAKLSAgICB2b2lkIGRpZENvbW1pdExvYWQoY29uc3QgVHJhbnNhY3Rpb246OlRva2Vu
JiwgV2ViQ2VydGlmaWNhdGVJbmZvJiwgYm9vbCBoYXNJbnNlY3VyZUNvbnRlbnQpOworICAgIHZv
aWQgZGlkQ29tbWl0TG9hZChjb25zdCBUcmFuc2FjdGlvbjo6VG9rZW4mLCBXZWJDZXJ0aWZpY2F0
ZUluZm8mLCBib29sIGhhc0luc2VjdXJlQ29udGVudCwgYm9vbCB1c2VkTGVnYWN5VExTKTsKICAg
ICB2b2lkIGRpZEZpbmlzaExvYWQoY29uc3QgVHJhbnNhY3Rpb246OlRva2VuJik7CiAgICAgdm9p
ZCBkaWRGYWlsTG9hZChjb25zdCBUcmFuc2FjdGlvbjo6VG9rZW4mKTsKIApJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAkocmV2aXNp
b24gMjU1Nzc3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJv
eHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjQsNyArMjY0LDcgQEAKICAgICBtX3BhZ2UuZGlk
RmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIGZy
YW1lSUQsIFdURk1vdmUoZnJhbWVTZWN1cml0eU9yaWdpbiksIG5hdmlnYXRpb25JRCwgcHJvdmlz
aW9uYWxVUkwsIGVycm9yLCB3aWxsQ29udGludWVMb2FkaW5nLCB1c2VyRGF0YSk7IC8vIE1heSBk
ZWxldGUgfHRoaXN8LgogfQogCi12b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDb21taXRM
b2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92
aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJ
bmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9u
YWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQs
IGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRp
ZENvbW1pdExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29u
dGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0
aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCB1c2VkTGVnYWN5VExTLCBib29sIGNv
bnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVu
dD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7
CiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTI3NCw3ICsyNzQsNyBAQAogICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV93ZWJQYWdlSUQpOwogCiAgICAgbV93YXNDb21taXR0ZWQgPSB0cnVlOwotICAgIG1fcGFnZS5j
b21taXRQcm92aXNpb25hbFBhZ2UoZnJhbWVJRCwgbmF2aWdhdGlvbklELCBtaW1lVHlwZSwgZnJh
bWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIGZyYW1lTG9hZFR5cGUsIGNlcnRpZmljYXRlSW5m
bywgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCB1c2Vy
RGF0YSk7IC8vIFdpbGwgZGVsZXRlIHx0aGlzfC4KKyAgICBtX3BhZ2UuY29tbWl0UHJvdmlzaW9u
YWxQYWdlKGZyYW1lSUQsIG5hdmlnYXRpb25JRCwgbWltZVR5cGUsIGZyYW1lSGFzQ3VzdG9tQ29u
dGVudFByb3ZpZGVyLCBmcmFtZUxvYWRUeXBlLCBjZXJ0aWZpY2F0ZUluZm8sIHVzZWRMZWdhY3lU
TFMsIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgdXNl
ckRhdGEpOyAvLyBXaWxsIGRlbGV0ZSB8dGhpc3wuCiB9CiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdl
UHJveHk6OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKGNvbnN0IFdlYk5hdmlnYXRpb25E
YXRhU3RvcmUmIHN0b3JlLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAkocmV2aXNpb24gMjU1
Nzc3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAko
d29ya2luZyBjb3B5KQpAQCAtMTIyLDcgKzEyMiw3IEBACiAgICAgdm9pZCBkaWRQZXJmb3JtQ2xp
ZW50UmVkaXJlY3QoY29uc3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYg
ZGVzdGluYXRpb25VUkxTdHJpbmcsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAgICAgdm9p
ZCBkaWRDcmVhdGVNYWluRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2b2lk
IGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmLCBVUkwmJiB1bnJlYWNoYWJsZVVSTCwgY29u
c3QgVXNlckRhdGEmKTsKLSAgICB2b2lkIGRpZENvbW1pdExvYWRGb3JGcmFtZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVM
b2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiwgYm9vbCBjb250YWluc1Bs
dWdpbkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNl
ZEhhc0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRpZENvbW1p
dExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQ
cm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNh
dGVJbmZvJiwgYm9vbCB1c2VkTGVnYWN5VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQs
IE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVD
b250ZW50LCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25z
dCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwg
V2ViQ29yZTo6V2lsbENvbnRpbnVlTG9hZGluZywgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lk
IHN0YXJ0VVJMU2NoZW1lVGFzayhVUkxTY2hlbWVUYXNrUGFyYW1ldGVycyYmKTsKICAgICB2b2lk
IGJhY2tGb3J3YXJkR29Ub0l0ZW0oY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRp
ZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYs
IGNvbnN0IFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cyYpPiYmKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjU1Nzc3KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE2
MSw3ICszMTYxLDcgQEAKICAgICBzZW5kZXItPnNlbmQoYWN0aW9uLCBuYXZpZ2F0aW9uID8gbmF2
aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkgOiAwLCBkb3dubG9hZElELCBXVEZNb3ZlKHdlYnNpdGVQ
b2xpY2llcykpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdl
KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQz
Ml90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlm
aWNhdGVJbmZvLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6
Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2Vy
RGF0YSYgdXNlckRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdl
KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQz
Ml90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlm
aWNhdGVJbmZvLCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVu
dCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3Vy
ZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBBU1NFUlQobV9wcm92
aXNpb25hbFBhZ2UpOwogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImNvbW1p
dFByb3Zpc2lvbmFsUGFnZTogbmV3UElEID0gJWkiLCBtX3Byb3Zpc2lvbmFsUGFnZS0+cHJvY2Vz
cygpLnByb2Nlc3NJZGVudGlmaWVyKCkpOwpAQCAtMzE5NSw3ICszMTk1LDcgQEAKICAgICBjb25z
dCBhdXRvIG9sZFdlYlBhZ2VJRCA9IG1fd2ViUGFnZUlEOwogICAgIHN3YXBUb1Byb3Zpc2lvbmFs
UGFnZShzdGQ6OmV4Y2hhbmdlKG1fcHJvdmlzaW9uYWxQYWdlLCBudWxscHRyKSk7CiAKLSAgICBk
aWRDb21taXRMb2FkRm9yRnJhbWUoZnJhbWVJRCwgbmF2aWdhdGlvbklELCBtaW1lVHlwZSwgZnJh
bWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIGZyYW1lTG9hZFR5cGUsIGNlcnRpZmljYXRlSW5m
bywgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCB1c2Vy
RGF0YSk7CisgICAgZGlkQ29tbWl0TG9hZEZvckZyYW1lKGZyYW1lSUQsIG5hdmlnYXRpb25JRCwg
bWltZVR5cGUsIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBmcmFtZUxvYWRUeXBlLCBj
ZXJ0aWZpY2F0ZUluZm8sIHVzZWRMZWdhY3lUTFMsIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIGZv
cmNlZEhhc0luc2VjdXJlQ29udGVudCwgdXNlckRhdGEpOwogCiAgICAgbV9pbnNwZWN0b3JDb250
cm9sbGVyLT5kaWRDb21taXRQcm92aXNpb25hbFBhZ2Uob2xkV2ViUGFnZUlELCBtX3dlYlBhZ2VJ
RCk7CiB9CkBAIC00NDgxLDcgKzQ0ODEsNyBAQAogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1
c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3Qgb3BhcXVlRnJhbWVMb2FkVHlwZSwgY29uc3Qg
V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgY29udGFpbnNQ
bHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50PiBoYXNJbnNlY3VyZUNv
bnRlbnQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRD
b21taXRMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRl
bnRQcm92aWRlciwgdWludDMyX3Qgb3BhcXVlRnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6
Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9v
bCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+IGhh
c0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIExPRyhM
b2FkaW5nLCAiKExvYWRpbmcpIFdlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBkaWRDb21taXRMb2Fk
Rm9yRnJhbWUgaW4gbmF2aWdhdGlvbiAlIiBQUkl1NjQsIG1faWRlbnRpZmllci50b1VJbnQ2NCgp
LCBuYXZpZ2F0aW9uSUQpOwogICAgIExPRyhCYWNrRm9yd2FyZCwgIihCYWNrL0ZvcndhcmQpIEFm
dGVyIGxvYWQgY29tbWl0LCBiYWNrL2ZvcndhcmQgbGlzdCBpcyBub3c6JXMiLCBtX2JhY2tGb3J3
YXJkTGlzdC0+bG9nZ2luZ1N0cmluZygpKTsKQEAgLTQ1MjMsNyArNDUyMyw3IEBACiAgICAgYm9v
bCBtYXJrUGFnZUluc2VjdXJlID0gaGFzSW5zZWN1cmVDb250ZW50ID8gaGFzSW5zZWN1cmVDb250
ZW50LnZhbHVlKCkgPT0gSGFzSW5zZWN1cmVDb250ZW50OjpZZXMgOiBtX3RyZWF0c1NIQTFDZXJ0
aWZpY2F0ZXNBc0luc2VjdXJlICYmIGNlcnRpZmljYXRlSW5mby5jb250YWluc05vblJvb3RTSEEx
U2lnbmVkQ2VydGlmaWNhdGUoKTsKIAogICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkgewot
ICAgICAgICBtX3BhZ2VMb2FkU3RhdGUuZGlkQ29tbWl0TG9hZCh0cmFuc2FjdGlvbiwgd2ViQ2Vy
dGlmaWNhdGVJbmZvLCBtYXJrUGFnZUluc2VjdXJlKTsKKyAgICAgICAgbV9wYWdlTG9hZFN0YXRl
LmRpZENvbW1pdExvYWQodHJhbnNhY3Rpb24sIHdlYkNlcnRpZmljYXRlSW5mbywgbWFya1BhZ2VJ
bnNlY3VyZSwgdXNlZExlZ2FjeVRMUyk7CiAgICAgICAgIG1fc2hvdWxkU3VwcHJlc3NOZXh0QXV0
b21hdGljTmF2aWdhdGlvblNuYXBzaG90ID0gZmFsc2U7CiAgICAgfSBlbHNlIGlmIChtYXJrUGFn
ZUluc2VjdXJlKQogICAgICAgICBtX3BhZ2VMb2FkU3RhdGUuZGlkRGlzcGxheU9yUnVuSW5zZWN1
cmVDb250ZW50KHRyYW5zYWN0aW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCShyZXZpc2lvbiAyNTU3NzcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTU4Nyw3ICsxNTg3LDcgQEAKICNlbmRp
ZgogCiAgICAgUHJvdmlzaW9uYWxQYWdlUHJveHkqIHByb3Zpc2lvbmFsUGFnZVByb3h5KCkgY29u
c3QgeyByZXR1cm4gbV9wcm92aXNpb25hbFBhZ2UuZ2V0KCk7IH0KLSAgICB2b2lkIGNvbW1pdFBy
b3Zpc2lvbmFsUGFnZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQ
cm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNh
dGVJbmZvJiwgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpI
YXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRh
dGEmKTsKKyAgICB2b2lkIGNvbW1pdFByb3Zpc2lvbmFsUGFnZShXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9v
bCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwg
Y29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiwgYm9vbCB1c2VkTGVnYWN5VExTLCBib29s
IGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29u
dGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYpOwogCiAgICAg
Ly8gTG9naWMgc2hhcmVkIGJldHdlZW4gdGhlIFdlYlBhZ2VQcm94eSBhbmQgdGhlIFByb3Zpc2lv
bmFsUGFnZVByb3h5LgogICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZVNo
YXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMJiYsIFVSTCYmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBV
c2VyRGF0YSYpOwpAQCAtMTczNyw3ICsxNzM3LDcgQEAKICAgICB2b2lkIGRpZENhbmNlbENsaWVu
dFJlZGlyZWN0Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2b2lkIGRp
ZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmKTsKICAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25h
bExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
Y29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYsIFdlYkNvcmU6OldpbGxDb250aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAg
dm9pZCBkaWRDb21taXRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXND
dXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNv
cmU6OkNlcnRpZmljYXRlSW5mbyYsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9u
YWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQs
IGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkaWRDb21taXRMb2FkRm9yRnJhbWUoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZy
YW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYsIGJvb2wgdXNlZExl
Z2FjeVRMUywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpI
YXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRh
dGEmKTsKICAgICB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYpOwog
ICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkRmFp
bExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFVzZXJEYXRhJik7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCShyZXZpc2lvbiAyNTU3NzcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTEyNiw3ICsxMjYsNyBAQAogICAg
IERpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQpCiAgICAgRGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwgdXJsKQog
ICAgIERpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3Vy
aXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFN0cmluZyBwcm92aXNpb25hbFVSTCwg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgZW51bTpib29sIFdlYkNvcmU6OldpbGxDb250
aW51ZUxvYWRpbmcgd2lsbENvbnRpbnVlTG9hZGluZywgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0
YSkKLSAgICBEaWRDb21taXRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU3RyaW5nIG1pbWVUeXBlLCBib29sIGhhc0N1
c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgbG9hZFR5cGUsIFdlYkNvcmU6OkNlcnRpZmlj
YXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0
aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRl
bnQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCisgICAgRGlkQ29tbWl0TG9hZEZvckZyYW1l
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IFN0cmluZyBtaW1lVHlwZSwgYm9vbCBoYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90
IGxvYWRUeXBlLCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvLCBib29s
IHVzZWRMZWdhY3lUTFMsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2Vi
Q29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIFdlYktp
dDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkRmFpbExvYWRGb3JGcmFtZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yIGVycm9yLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIERpZEZp
bmlzaERvY3VtZW50TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAg
RGlkRmluaXNoTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDI1NTc3NykKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU2MCw3ICs1NjAsNyBAQAogICAgIHdlYlBhZ2UtPnNhbmRi
b3hFeHRlbnNpb25UcmFja2VyKCkuZGlkQ29tbWl0UHJvdmlzaW9uYWxMb2FkKG1fZnJhbWUpOwog
CiAgICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCi0gICAgd2ViUGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEaWRDb21taXRMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgp
LCBkb2N1bWVudExvYWRlci5uYXZpZ2F0aW9uSUQoKSwgZG9jdW1lbnRMb2FkZXIucmVzcG9uc2Uo
KS5taW1lVHlwZSgpLCBtX2ZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBzdGF0aWNfY2Fz
dDx1aW50MzJfdD4obV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmxvYWRUeXBlKCkpLCB2
YWx1ZU9yQ29tcHV0ZShkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLmNlcnRpZmljYXRlSW5mbygp
LCBbXSB7IHJldHVybiBDZXJ0aWZpY2F0ZUluZm8oKTsgfSksIG1fZnJhbWUtPmNvcmVGcmFtZSgp
LT5kb2N1bWVudCgpLT5pc1BsdWdpbkRvY3VtZW50KCksIGhhc0luc2VjdXJlQ29udGVudCwgVXNl
ckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1
c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEaWRDb21taXRMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBkb2N1
bWVudExvYWRlci5uYXZpZ2F0aW9uSUQoKSwgZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKS5taW1l
VHlwZSgpLCBtX2ZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBzdGF0aWNfY2FzdDx1aW50
MzJfdD4obV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmxvYWRUeXBlKCkpLCB2YWx1ZU9y
Q29tcHV0ZShkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLmNlcnRpZmljYXRlSW5mbygpLCBbXSB7
IHJldHVybiBDZXJ0aWZpY2F0ZUluZm8oKTsgfSksIGRvY3VtZW50TG9hZGVyLnJlc3BvbnNlKCku
dXNlZExlZ2FjeVRMUygpLCBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKS0+aXNQbHVn
aW5Eb2N1bWVudCgpLCBoYXNJbnNlY3VyZUNvbnRlbnQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgp
KSkpOwogICAgIHdlYlBhZ2UtPmRpZENvbW1pdExvYWQobV9mcmFtZSk7CiB9CiAKSW5kZXg6IFRv
b2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1
NTc3NykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBA
CisyMDIwLTAyLTA1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgTWFrZSBXS1dlYlZpZXcuX25lZ290aWF0ZWRMZWdhY3lUTFMgYWNjdXJhdGUg
d2hlbiBsb2FkaW5nIG1haW4gcmVzb3VvcmNlIGZyb20gbmV0d29yayBvciBjYWNoZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3MjA3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSFRUUFNlcnZlciBub3cg
c3VwcG9ydHMgSFRUUFMuIFRlbGwgeW91ciBmcmllbmRzIQorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9DaGFsbGVuZ2UubW06CisgICAgICAgICh0ZXN0Q2VydGlm
aWNhdGUpOgorICAgICAgICAodGVzdElkZW50aXR5KToKKyAgICAgICAgKGNyZWRlbnRpYWxXaXRo
SWRlbnRpdHkpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVExT
RGVwcmVjYXRpb24ubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp3ZWJWaWV3V2l0aE5hdmln
YXRpb25EZWxlZ2F0ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpIVFRQU2Vy
dmVyOjpIVFRQU2VydmVyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OnJl
cXVlc3QgY29uc3QpOgorCiAyMDIwLTAyLTA0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IE1hYyBDTWFrZSBidWlsZApJbmRleDogVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9DaGFsbGVuZ2UubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9DaGFsbGVuZ2UubW0J
KHJldmlzaW9uIDI1NTc3NykKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvQ2hhbGxlbmdlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbXBv
cnQgImNvbmZpZy5oIgogCisjaW1wb3J0ICJIVFRQU2VydmVyLmgiCiAjaW1wb3J0ICJQbGF0Zm9y
bVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVENQU2VydmVyLmgiCiAjaW1wb3J0ICJUZXN0LmgiCkBA
IC00MywxMSArNDQsMTQgQEAKIAogc3RhdGljIGJvb2wgbmF2aWdhdGlvbkZpbmlzaGVkOwogCi1z
dGF0aWMgUmV0YWluUHRyPE5TVVJMQ3JlZGVudGlhbD4gY3JlZGVudGlhbFdpdGhJZGVudGl0eSgp
CitzdGF0aWMgUmV0YWluUHRyPFNlY0NlcnRpZmljYXRlUmVmPiB0ZXN0Q2VydGlmaWNhdGUoKQog
ewogICAgIGF1dG8gY2VydGlmaWNhdGVCeXRlcyA9IFRlc3RXZWJLaXRBUEk6OlRDUFNlcnZlcjo6
dGVzdENlcnRpZmljYXRlKCk7Ci0gICAgYXV0byBjZXJ0aWZpY2F0ZSA9IGFkb3B0Q0YoU2VjQ2Vy
dGlmaWNhdGVDcmVhdGVXaXRoRGF0YShudWxscHRyLCAoX19icmlkZ2UgQ0ZEYXRhUmVmKVtOU0Rh
dGEgZGF0YVdpdGhCeXRlczpjZXJ0aWZpY2F0ZUJ5dGVzLmRhdGEoKSBsZW5ndGg6Y2VydGlmaWNh
dGVCeXRlcy5zaXplKCldKSk7Ci0gICAgCisgICAgcmV0dXJuIGFkb3B0Q0YoU2VjQ2VydGlmaWNh
dGVDcmVhdGVXaXRoRGF0YShudWxscHRyLCAoX19icmlkZ2UgQ0ZEYXRhUmVmKVtOU0RhdGEgZGF0
YVdpdGhCeXRlczpjZXJ0aWZpY2F0ZUJ5dGVzLmRhdGEoKSBsZW5ndGg6Y2VydGlmaWNhdGVCeXRl
cy5zaXplKCldKSk7Cit9CisKK1JldGFpblB0cjxTZWNJZGVudGl0eVJlZj4gdGVzdElkZW50aXR5
KCkKK3sKICAgICBhdXRvIHByaXZhdGVLZXlCeXRlcyA9IFRlc3RXZWJLaXRBUEk6OlRDUFNlcnZl
cjo6dGVzdFByaXZhdGVLZXkoKTsKICAgICBOU0RhdGEgKmRlckVuY29kZWRQcml2YXRlS2V5ID0g
W05TRGF0YSBkYXRhV2l0aEJ5dGVzOnByaXZhdGVLZXlCeXRlcy5kYXRhKCkgbGVuZ3RoOnByaXZh
dGVLZXlCeXRlcy5zaXplKCldOwogICAgIE5TRGljdGlvbmFyeSogb3B0aW9ucyA9IEB7CkBAIC02
MSwxMCArNjUsMTUgQEAKICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CiAgICAgRVhQRUNUX05PVF9O
VUxMKHByaXZhdGVLZXkuZ2V0KCkpOwogCi0gICAgYXV0byBpZGVudGl0eSA9IGFkb3B0Q0YoU2Vj
SWRlbnRpdHlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY2VydGlmaWNhdGUuZ2V0KCksIHBy
aXZhdGVLZXkuZ2V0KCkpKTsKKyAgICByZXR1cm4gYWRvcHRDRihTZWNJZGVudGl0eUNyZWF0ZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCB0ZXN0Q2VydGlmaWNhdGUoKS5nZXQoKSwgcHJpdmF0ZUtleS5n
ZXQoKSkpOworfQorCitzdGF0aWMgUmV0YWluUHRyPE5TVVJMQ3JlZGVudGlhbD4gY3JlZGVudGlh
bFdpdGhJZGVudGl0eSgpCit7CisgICAgYXV0byBpZGVudGl0eSA9IHRlc3RJZGVudGl0eSgpOwog
ICAgIEVYUEVDVF9OT1RfTlVMTChpZGVudGl0eSk7CiAgICAgCi0gICAgcmV0dXJuIFtOU1VSTENy
ZWRlbnRpYWwgY3JlZGVudGlhbFdpdGhJZGVudGl0eTppZGVudGl0eS5nZXQoKSBjZXJ0aWZpY2F0
ZXM6QFsoaWQpY2VydGlmaWNhdGUuZ2V0KCldIHBlcnNpc3RlbmNlOk5TVVJMQ3JlZGVudGlhbFBl
cnNpc3RlbmNlTm9uZV07CisgICAgcmV0dXJuIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbFdp
dGhJZGVudGl0eTppZGVudGl0eS5nZXQoKSBjZXJ0aWZpY2F0ZXM6QFsoaWQpdGVzdENlcnRpZmlj
YXRlKCkuZ2V0KCldIHBlcnNpc3RlbmNlOk5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZV07
CiB9CiAKIEBpbnRlcmZhY2UgQ2hhbGxlbmdlRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0
aW9uRGVsZWdhdGU+CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1RMU0RlcHJlY2F0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvVExTRGVwcmVjYXRpb24ubW0JKHJldmlzaW9uIDI1NTc3NykKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVExTRGVwcmVjYXRpb24ubW0JKHdv
cmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEhBVkUoU1NMKQogCisjaW1wb3J0
ICJIVFRQU2VydmVyLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAi
VENQU2VydmVyLmgiCiAjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCkBAIC0zNyw2
ICszOCw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dL
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPFdlYktpdC9XZWJVSUtpdFN1cHBvcnQuaD4K
QEAgLTQzLDcgKzQ1LDcgQEAKICNpbXBvcnQgPFdlYktpdC9XZWJDb3JlVGhyZWFkLmg+CiAjZW5k
aWYKIAotI2lmIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkKKyNpZiBIQVZFKFRMU19QUk9U
T0NPTF9WRVJTSU9OX1QpIHx8IEhBVkUoTkVUV09SS19GUkFNRVdPUkspCiBAaW50ZXJmYWNlIFRM
U09ic2VydmVyIDogTlNPYmplY3QKIC0gKHZvaWQpd2FpdFVudGlsTmVnb3RpYXRlZExlZ2FjeVRM
U0NoYW5nZWQ7CiBAZW5kCkBAIC0yMjgsMTMgKzIzMCw5IEBACiB9CiAKICNpZiBIQVZFKFRMU19Q
Uk9UT0NPTF9WRVJTSU9OX1QpCi1URVNUKFRMU1ZlcnNpb24sIE5lZ290aWF0ZWRMZWdhY3lUTFMp
CisKK3N0YXRpYyBzdGQ6OnBhaXI8UmV0YWluUHRyPFdLV2ViVmlldz4sIFJldGFpblB0cjxUZXN0
TmF2aWdhdGlvbkRlbGVnYXRlPj4gd2ViVmlld1dpdGhOYXZpZ2F0aW9uRGVsZWdhdGUoKQogewot
ICAgIFRDUFNlcnZlciBzZXJ2ZXIoVENQU2VydmVyOjpQcm90b2NvbDo6SFRUUFMsIFtdIChTU0wg
KnNzbCkgewotICAgICAgICBUQ1BTZXJ2ZXI6OnJlc3BvbmRXaXRoT0soc3NsKTsKLSAgICAgICAg
VENQU2VydmVyOjpyZXNwb25kV2l0aE9LKHNzbCk7Ci0gICAgfSwgdGxzMV8xKTsKLQogICAgIGF1
dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOwogICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKICAgICBbd2ViVmlldyBz
ZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwpAQCAtMjQyLDYgKzI0MCwyMCBA
QAogICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5hdXRo
ZW50aWNhdGlvbk1ldGhvZCwgTlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZFNlcnZlclRydXN0KTsK
ICAgICAgICAgY2FsbGJhY2soTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWws
IFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbEZvclRydXN0OmNoYWxsZW5nZS5wcm90ZWN0aW9u
U3BhY2Uuc2VydmVyVHJ1c3RdKTsKICAgICB9XTsKKyAgICByZXR1cm4geyB3ZWJWaWV3LCBkZWxl
Z2F0ZSB9OworfQorCisjZW5kaWYgLy8gSEFWRShUTFNfUFJPVE9DT0xfVkVSU0lPTl9UKSB8fCBI
QVZFKE5FVFdPUktfRlJBTUVXT1JLKQorCisjaWYgSEFWRShUTFNfUFJPVE9DT0xfVkVSU0lPTl9U
KQorCitURVNUKFRMU1ZlcnNpb24sIE5lZ290aWF0ZWRMZWdhY3lUTFMpCit7CisgICAgSFRUUFNl
cnZlciBzZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyAiaGVsbG8iIH0gfQorICAgIH0sIEhUVFBT
ZXJ2ZXI6OlByb3RvY29sOjpIdHRwc1dpdGhMZWdhY3lUTFMpOworCisgICAgYXV0byBbd2ViVmll
dywgZGVsZWdhdGVdID0gd2ViVmlld1dpdGhOYXZpZ2F0aW9uRGVsZWdhdGUoKTsKICAgICBOU1VS
TFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBV
UkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4w
LjE6JWQvIiwgc2VydmVyLnBvcnQoKV1dXTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1
ZXN0XTsKIApAQCAtMjYyLDggKzI3NCw2NSBAQAogCiAgICAgW3dlYlZpZXcgcmVtb3ZlT2JzZXJ2
ZXI6b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAIl9uZWdvdGlhdGVkTGVnYWN5VExTIl07CiB9
Ci0jZW5kaWYKIAorI2VuZGlmIC8vIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkKKworI2lm
IEhBVkUoTkVUV09SS19GUkFNRVdPUkspICYmIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkK
KworVEVTVChUTFNWZXJzaW9uLCBOYXZpZ2F0ZUJhY2spCit7CisgICAgSFRUUFNlcnZlciBsZWdh
Y3lUTFNTZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyAiaGVsbG8iIH0gfQorICAgIH0sIEhUVFBT
ZXJ2ZXI6OlByb3RvY29sOjpIdHRwc1dpdGhMZWdhY3lUTFMpOworCisgICAgSFRUUFNlcnZlciBt
b2Rlcm5UTFNTZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyAiaGVsbG8iIH0gfQorICAgIH0sIEhU
VFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CisgICAgCisgICAgYXV0byBbd2ViVmlldywgZGVs
ZWdhdGVdID0gd2ViVmlld1dpdGhOYXZpZ2F0aW9uRGVsZWdhdGUoKTsKKyAgICBhdXRvIG9ic2Vy
dmVyID0gYWRvcHROUyhbVExTT2JzZXJ2ZXIgbmV3XSk7CisgICAgW3dlYlZpZXcgYWRkT2JzZXJ2
ZXI6b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAIl9uZWdvdGlhdGVkTGVnYWN5VExTIiBvcHRp
b25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDpuaWxdOworCisgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6bGVnYWN5VExTU2VydmVyLnJlcXVlc3QoKV07CisgICAgRVhQRUNU
X0ZBTFNFKFt3ZWJWaWV3IF9uZWdvdGlhdGVkTGVnYWN5VExTXSk7CisgICAgW2RlbGVnYXRlIHdh
aXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBfbmVn
b3RpYXRlZExlZ2FjeVRMU10pOworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6bW9kZXJuVExT
U2VydmVyLnJlcXVlc3QoKV07CisgICAgW2RlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0
aW9uXTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgX25lZ290aWF0ZWRMZWdhY3lUTFNdKTsK
KworICAgIFt3ZWJWaWV3IGdvQmFja107CisgICAgW29ic2VydmVyIHdhaXRVbnRpbE5lZ290aWF0
ZWRMZWdhY3lUTFNDaGFuZ2VkXTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBfbmVnb3RpYXRl
ZExlZ2FjeVRMU10pOworCisgICAgW3dlYlZpZXcgcmVtb3ZlT2JzZXJ2ZXI6b2JzZXJ2ZXIuZ2V0
KCkgZm9yS2V5UGF0aDpAIl9uZWdvdGlhdGVkTGVnYWN5VExTIl07Cit9CisKK1RFU1QoVExTVmVy
c2lvbiwgU3VicmVzb3VyY2UpCit7CisgICAgSFRUUFNlcnZlciBsZWdhY3lUTFNTZXJ2ZXIoewor
ICAgICAgICB7ICIvIiwgeyAiaGVsbG8iIH0gfQorICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29s
OjpIdHRwc1dpdGhMZWdhY3lUTFMpOworCisgICAgSFRUUFNlcnZlciBtb2Rlcm5UTFNTZXJ2ZXIo
eworICAgICAgICB7ICIvIiwgeyBtYWtlU3RyaW5nKCI8c2NyaXB0PmZldGNoKCdodHRwczovLzEy
Ny4wLjAuMToiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGVnYWN5VExTU2VydmVyLnBvcnQoKSks
ICIvJyx7bW9kZTonbm8tY29ycyd9KTwvc2NyaXB0PiIpIH0gfQorICAgIH0sIEhUVFBTZXJ2ZXI6
OlByb3RvY29sOjpIdHRwcyk7CisgICAgCisgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0g
d2ViVmlld1dpdGhOYXZpZ2F0aW9uRGVsZWdhdGUoKTsKKyAgICBhdXRvIG9ic2VydmVyID0gYWRv
cHROUyhbVExTT2JzZXJ2ZXIgbmV3XSk7CisgICAgW3dlYlZpZXcgYWRkT2JzZXJ2ZXI6b2JzZXJ2
ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAIl9uZWdvdGlhdGVkTGVnYWN5VExTIiBvcHRpb25zOk5TS2V5
VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDpuaWxdOworCisgICAgRVhQRUNUX0ZBTFNF
KFt3ZWJWaWV3IF9uZWdvdGlhdGVkTGVnYWN5VExTXSk7CisgICAgW3dlYlZpZXcgbG9hZFJlcXVl
c3Q6bW9kZXJuVExTU2VydmVyLnJlcXVlc3QoKV07CisgICAgd2hpbGUgKCFbd2ViVmlldyBfbmVn
b3RpYXRlZExlZ2FjeVRMU10pCisgICAgICAgIFtvYnNlcnZlciB3YWl0VW50aWxOZWdvdGlhdGVk
TGVnYWN5VExTQ2hhbmdlZF07CisKKyAgICBbd2ViVmlldyByZW1vdmVPYnNlcnZlcjpvYnNlcnZl
ci5nZXQoKSBmb3JLZXlQYXRoOkAiX25lZ290aWF0ZWRMZWdhY3lUTFMiXTsKK30KKworI2VuZGlm
IC8vIEhBVkUoTkVUV09SS19GUkFNRVdPUkspICYmIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05f
VCkKKwogLy8gRklYTUU6IEFkZCBzb21lIHRlc3RzIGZvciBXS1dlYlZpZXcuaGFzT25seVNlY3Vy
ZUNvbnRlbnQKIAogfQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgJ
KHJldmlzaW9uIDI1NTc3NykKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw4IEBACiBjbGFzcyBIVFRQU2VydmVyIHsK
IHB1YmxpYzoKICAgICBzdHJ1Y3QgSFRUUFJlc3BvbnNlOwotICAgIEhUVFBTZXJ2ZXIoc3RkOjpp
bml0aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxTdHJpbmcsIEhUVFBSZXNwb25zZT4+KTsKKyAgICBl
bnVtIGNsYXNzIFByb3RvY29sIDogdWludDhfdCB7IEh0dHAsIEh0dHBzLCBIdHRwc1dpdGhMZWdh
Y3lUTFMgfTsKKyAgICBIVFRQU2VydmVyKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8
U3RyaW5nLCBIVFRQUmVzcG9uc2U+PiwgUHJvdG9jb2wgPSBQcm90b2NvbDo6SHR0cCk7CiAgICAg
dWludDE2X3QgcG9ydCgpIGNvbnN0OwogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCgpIGNvbnN0
OwogICAgIApAQCAtNDYsNiArNDcsNyBAQAogICAgIHZvaWQgcmVzcG9uZFRvUmVxdWVzdHMobndf
Y29ubmVjdGlvbl90KTsKICAgICAKICAgICBSZXRhaW5QdHI8bndfbGlzdGVuZXJfdD4gbV9saXN0
ZW5lcjsKKyAgICBjb25zdCBQcm90b2NvbCBtX3Byb3RvY29sOwogICAgIGNvbnN0IEhhc2hNYXA8
U3RyaW5nLCBIVFRQUmVzcG9uc2U+IG1fcmVxdWVzdFJlc3BvbnNlTWFwOwogfTsKIApAQCAtNzQs
MyArNzYsNSBAQAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQogCiAjZW5kaWYgLy8gSEFW
RShORVRXT1JLX0ZSQU1FV09SSykKKworUmV0YWluUHRyPFNlY0lkZW50aXR5UmVmPiB0ZXN0SWRl
bnRpdHkoKTsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0JKHJl
dmlzaW9uIDI1NTc3NykKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5t
bQkod29ya2luZyBjb3B5KQpAQCAtMzMsOCArMzMsOSBAQAogCiBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSSB7CiAKLUhUVFBTZXJ2ZXI6OkhUVFBTZXJ2ZXIoc3RkOjppbml0aWFsaXplcl9saXN0PHN0
ZDo6cGFpcjxTdHJpbmcsIEhUVFBSZXNwb25zZT4+IHJlc3BvbnNlcykKLSAgICA6IG1fcmVxdWVz
dFJlc3BvbnNlTWFwKFtdKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8U3RyaW5nLCBI
VFRQU2VydmVyOjpIVFRQUmVzcG9uc2U+PiBsaXN0KSB7CitIVFRQU2VydmVyOjpIVFRQU2VydmVy
KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8U3RyaW5nLCBIVFRQUmVzcG9uc2U+PiBy
ZXNwb25zZXMsIFByb3RvY29sIHByb3RvY29sKQorICAgIDogbV9wcm90b2NvbChwcm90b2NvbCkK
KyAgICAsIG1fcmVxdWVzdFJlc3BvbnNlTWFwKFtdKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6
OnBhaXI8U3RyaW5nLCBIVFRQU2VydmVyOjpIVFRQUmVzcG9uc2U+PiBsaXN0KSB7CiAgICAgICAg
IEhhc2hNYXA8U3RyaW5nLCBIVFRQU2VydmVyOjpIVFRQUmVzcG9uc2U+IG1hcDsKICAgICAgICAg
Zm9yIChhdXRvJiBwYWlyIDogbGlzdCkKICAgICAgICAgICAgIG1hcC5hZGQocGFpci5maXJzdCwg
cGFpci5zZWNvbmQpOwpAQCAtNDEsNyArNDIsMTkgQEAKICAgICAgICAgcmV0dXJuIG1hcDsKICAg
ICB9KHJlc3BvbnNlcykpCiB7Ci0gICAgYXV0byBwYXJhbWV0ZXJzID0gYWRvcHROUyhud19wYXJh
bWV0ZXJzX2NyZWF0ZV9zZWN1cmVfdGNwKE5XX1BBUkFNRVRFUlNfRElTQUJMRV9QUk9UT0NPTCwg
TldfUEFSQU1FVEVSU19ERUZBVUxUX0NPTkZJR1VSQVRJT04pKTsKKyAgICBhdXRvIGNvbmZpZ3Vy
ZVRMUyA9IHByb3RvY29sID09IFByb3RvY29sOjpIdHRwID8gTldfUEFSQU1FVEVSU19ESVNBQkxF
X1BST1RPQ09MIDogXihud19wcm90b2NvbF9vcHRpb25zX3QgcHJvdG9jb2xPcHRpb25zKSB7Cisj
aWYgSEFWRShUTFNfUFJPVE9DT0xfVkVSU0lPTl9UKQorICAgICAgICBhdXRvIG9wdGlvbnMgPSBh
ZG9wdE5TKG53X3Rsc19jb3B5X3NlY19wcm90b2NvbF9vcHRpb25zKHByb3RvY29sT3B0aW9ucykp
OworICAgICAgICBhdXRvIGlkZW50aXR5ID0gYWRvcHROUyhzZWNfaWRlbnRpdHlfY3JlYXRlKHRl
c3RJZGVudGl0eSgpLmdldCgpKSk7CisgICAgICAgIHNlY19wcm90b2NvbF9vcHRpb25zX3NldF9s
b2NhbF9pZGVudGl0eShvcHRpb25zLmdldCgpLCBpZGVudGl0eS5nZXQoKSk7CisgICAgICAgIGlm
IChwcm90b2NvbCA9PSBQcm90b2NvbDo6SHR0cHNXaXRoTGVnYWN5VExTKQorICAgICAgICAgICAg
c2VjX3Byb3RvY29sX29wdGlvbnNfc2V0X21heF90bHNfcHJvdG9jb2xfdmVyc2lvbihvcHRpb25z
LmdldCgpLCB0bHNfcHJvdG9jb2xfdmVyc2lvbl9UTFN2MTApOworI2Vsc2UKKyAgICAgICAgVU5V
U0VEX1BBUkFNKHByb3RvY29sT3B0aW9ucyk7CisgICAgICAgIEFTU0VSVChwcm90b2NvbCAhPSBQ
cm90b2NvbDo6SHR0cHNXaXRoTGVnYWN5VExTKTsKKyNlbmRpZgorICAgIH07CisgICAgYXV0byBw
YXJhbWV0ZXJzID0gYWRvcHROUyhud19wYXJhbWV0ZXJzX2NyZWF0ZV9zZWN1cmVfdGNwKGNvbmZp
Z3VyZVRMUywgTldfUEFSQU1FVEVSU19ERUZBVUxUX0NPTkZJR1VSQVRJT04pKTsKICAgICBtX2xp
c3RlbmVyID0gYWRvcHROUyhud19saXN0ZW5lcl9jcmVhdGUocGFyYW1ldGVycy5nZXQoKSkpOwog
ICAgIG53X2xpc3RlbmVyX3NldF9xdWV1ZShtX2xpc3RlbmVyLmdldCgpLCBkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpKTsKICAgICBud19saXN0ZW5lcl9zZXRfbmV3X2Nvbm5lY3Rpb25faGFuZGxl
cihtX2xpc3RlbmVyLmdldCgpLCBeKG53X2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uKSB7CkBAIC0x
MjcsNyArMTQwLDE3IEBACiAKIE5TVVJMUmVxdWVzdCAqSFRUUFNlcnZlcjo6cmVxdWVzdCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVS
TFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwOi8vMTI3LjAuMC4x
OiVkLyIsIHBvcnQoKV1dXTsKKyAgICBOU1N0cmluZyAqZm9ybWF0OworICAgIHN3aXRjaCAobV9w
cm90b2NvbCkgeworICAgIGNhc2UgUHJvdG9jb2w6Okh0dHA6CisgICAgICAgIGZvcm1hdCA9IEAi
aHR0cDovLzEyNy4wLjAuMTolZC8iOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFByb3RvY29s
OjpIdHRwczoKKyAgICBjYXNlIFByb3RvY29sOjpIdHRwc1dpdGhMZWdhY3lUTFM6CisgICAgICAg
IGZvcm1hdCA9IEAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIjsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorICAgIHJldHVybiBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRo
U3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OmZvcm1hdCwgcG9ydCgpXV1dOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>
<flag name="review"
          id="405481"
          type_id="1"
          status="-"
          setter="achristensen"
    />
    <flag name="commit-queue"
          id="405499"
          type_id="3"
          status="-"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>