<?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>229686</bug_id>
          
          <creation_ts>2021-08-30 13:59:11 -0700</creation_ts>
          <short_desc>Preconnected socket is sometimes not used for initial request</short_desc>
          <delta_ts>2021-09-09 17:28:49 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ben Nham">nham</reporter>
          <assigned_to name="Ben Nham">nham</assigned_to>
          <cc>achristensen</cc>
    
    <cc>ap</cc>
    
    <cc>cdumez</cc>
    
    <cc>koivisto</cc>
    
    <cc>nham</cc>
    
    <cc>pvollan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1788646</commentid>
    <comment_count>0</comment_count>
    <who name="Ben Nham">nham</who>
    <bug_when>2021-08-30 13:59:11 -0700</bug_when>
    <thetext>Preconnected socket is sometimes not used for initial request</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788647</commentid>
    <comment_count>1</comment_count>
      <attachid>436810</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2021-08-30 14:00:57 -0700</bug_when>
    <thetext>Created attachment 436810
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788648</commentid>
    <comment_count>2</comment_count>
    <who name="Ben Nham">nham</who>
    <bug_when>2021-08-30 14:01:46 -0700</bug_when>
    <thetext>&lt;rdar://82461357&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788783</commentid>
    <comment_count>3</comment_count>
      <attachid>436843</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2021-08-30 21:26:21 -0700</bug_when>
    <thetext>Created attachment 436843
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788787</commentid>
    <comment_count>4</comment_count>
      <attachid>436846</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2021-08-30 23:08:52 -0700</bug_when>
    <thetext>Created attachment 436846
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789146</commentid>
    <comment_count>5</comment_count>
      <attachid>436961</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2021-08-31 16:18:03 -0700</bug_when>
    <thetext>Created attachment 436961
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789184</commentid>
    <comment_count>6</comment_count>
      <attachid>436977</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2021-08-31 18:10:46 -0700</bug_when>
    <thetext>Created attachment 436977
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791093</commentid>
    <comment_count>7</comment_count>
      <attachid>437527</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2021-09-07 10:30:55 -0700</bug_when>
    <thetext>Created attachment 437527
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791103</commentid>
    <comment_count>8</comment_count>
      <attachid>437527</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-09-07 10:43:55 -0700</bug_when>
    <thetext>Comment on attachment 437527
Patch

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

&gt; Source/WebKit/NetworkProcess/NetworkLoadScheduler.cpp:196
&gt; +void NetworkLoadScheduler::startedPreconnectForMainResource(const URL&amp; url)

This seems like a lot of logic for scheduling http1 preloads sequentially.  I would think this logic should go in CFNetwork checking if it has a preconnect task in flight instead of WebKit implementing its own scheduler.

&gt; Source/WebKit/NetworkProcess/NetworkLoadScheduler.h:74
&gt; +        ListHashSet&lt;NetworkLoad *&gt; pendingLoads;

We shouldn&apos;t be storing raw pointers like this.

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:1397
&gt; +    if (reason == PreconnectReason::MainResourceLoad) {
&gt; +        parameters.request.setPriority(WebCore::ResourceLoadPriority::VeryHigh);

Is there a reason we don&apos;t want to do this for preconnects from the API?

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:1405
&gt; +    task-&gt;setTimeout(1_s);

This seems too short to make preconnects useful in the real internet.

&gt; Source/WebKit/NetworkProcess/PreconnectReason.h:33
&gt; +enum class PreconnectReason : uint8_t {

: bool
Then you don&apos;t need EnumTraits below because it already knows 0 and 1 are the only valid values.

&gt; Source/WebKit/NetworkProcess/PreconnectTask.cpp:-50
&gt; -    m_timeoutTimer.startOneShot(60000_s);

This was definitely unnecessarily long.

&gt; Source/WebKit/NetworkProcess/PreconnectTask.h:32
&gt; +#include &lt;optional&gt;

This looks unused.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791401</commentid>
    <comment_count>9</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-09-08 00:44:44 -0700</bug_when>
    <thetext>This seems like a reasonable workaround to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791471</commentid>
    <comment_count>10</comment_count>
    <who name="Ben Nham">nham</who>
    <bug_when>2021-09-08 08:36:29 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #8)
&gt; Comment on attachment 437527 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=437527&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/NetworkLoadScheduler.cpp:196
&gt; &gt; +void NetworkLoadScheduler::startedPreconnectForMainResource(const URL&amp; url)
&gt; 
&gt; This seems like a lot of logic for scheduling http1 preloads sequentially. 
&gt; I would think this logic should go in CFNetwork checking if it has a
&gt; preconnect task in flight instead of WebKit implementing its own scheduler.

I agree that it should be implemented at that level, but their estimate is that they&apos;d need a couple weeks of effort to implement our desired behavior. They actually tried to implement it in a branch so the effort estimate should be grounded in reality. I can reach out to you with more details.

The same argument could be applied to the rest of NetworkLoadScheduler, which already is delaying loads for other reasons and is also arguably better implemented further down the stack.

&gt; &gt; Source/WebKit/NetworkProcess/NetworkLoadScheduler.h:74
&gt; &gt; +        ListHashSet&lt;NetworkLoad *&gt; pendingLoads;
&gt; 
&gt; We shouldn&apos;t be storing raw pointers like this.

We are doing this already in other parts of NetworkLoadScheduler:

  class NetworkLoadScheduler::HostContext {
      // ...

      HashSet&lt;NetworkLoad*&gt; m_activeLoads;
      ListHashSet&lt;NetworkLoad*&gt; m_pendingLoads;
  };

&gt; &gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:1397
&gt; &gt; +    if (reason == PreconnectReason::MainResourceLoad) {
&gt; &gt; +        parameters.request.setPriority(WebCore::ResourceLoadPriority::VeryHigh);
&gt; 
&gt; Is there a reason we don&apos;t want to do this for preconnects from the API?

If we don&apos;t set the priority here, then the preconnect ends up at the default priority (ResourceLoadPriority::Low). The eventual main resource request has a priority of ResourceLoadPriority::VeryHigh. This can cause a priority inversion as the hi-pri main resource ends up blocked on a low-pri preconnect which itself is blocked on some low-pri existing requests to the same origin to complete (since there is a limit on number of outstanding low-pri requests). This showed up in the page load benchmarks.

I chose to not bump the priority of API preconnects since the API doesn&apos;t tell us whether the preconnect is for a main resource or not. It only makes sense to bump the priority if the preconnect will eventually be used for a main resource.

&gt; &gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:1405
&gt; &gt; +    task-&gt;setTimeout(1_s);
&gt; 
&gt; This seems too short to make preconnects useful in the real internet.

I&apos;ll bump this up by some amount, at least large enough to cover a typical worst case for 3G when the radio needs to go through the full handshake for connection establishment at the link layer.

&gt; &gt; Source/WebKit/NetworkProcess/PreconnectReason.h:33
&gt; &gt; +enum class PreconnectReason : uint8_t {
&gt; 
&gt; : bool
&gt; Then you don&apos;t need EnumTraits below because it already knows 0 and 1 are
&gt; the only valid values.

I made a uint8_t because it doesn&apos;t logically seem to be a bool and there might eventually be more than two preconnect reasons. But I can change it to a bool for now and leave the change to a uint8 for a patch down the road.

&gt; &gt; Source/WebKit/NetworkProcess/PreconnectTask.cpp:-50
&gt; &gt; -    m_timeoutTimer.startOneShot(60000_s);
&gt; 
&gt; This was definitely unnecessarily long.
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/PreconnectTask.h:32
&gt; &gt; +#include &lt;optional&gt;
&gt; 
&gt; This looks unused.

I&apos;ll remove this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791484</commentid>
    <comment_count>11</comment_count>
      <attachid>437634</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2021-09-08 09:13:08 -0700</bug_when>
    <thetext>Created attachment 437634
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791485</commentid>
    <comment_count>12</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-09-08 09:13:54 -0700</bug_when>
    <thetext>I think we should treat the API to preconnect as high priority too.  It does indicate that there is a main resource request to that domain coming, and making preconnect requests high priority doesn&apos;t actually use many resources which would delay other things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791508</commentid>
    <comment_count>13</comment_count>
    <who name="Ben Nham">nham</who>
    <bug_when>2021-09-08 09:54:32 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #12)
&gt; I think we should treat the API to preconnect as high priority too.  It does
&gt; indicate that there is a main resource request to that domain coming, and
&gt; making preconnect requests high priority doesn&apos;t actually use many resources
&gt; which would delay other things.

Ok, in that case I&apos;ll just remove PreconnectReason entirely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791526</commentid>
    <comment_count>14</comment_count>
      <attachid>437645</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2021-09-08 10:21:13 -0700</bug_when>
    <thetext>Created attachment 437645
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792130</commentid>
    <comment_count>15</comment_count>
      <attachid>437645</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-09-09 15:56:01 -0700</bug_when>
    <thetext>Comment on attachment 437645
Patch

I think we should still push CFNetwork to fix this and remove this code once they do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792163</commentid>
    <comment_count>16</comment_count>
    <who name="Ben Nham">nham</who>
    <bug_when>2021-09-09 16:55:25 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #15)
&gt; Comment on attachment 437645 [details]
&gt; Patch
&gt; 
&gt; I think we should still push CFNetwork to fix this and remove this code once
&gt; they do.

I definitely agree and added you to a thread where we&apos;re discussing that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792179</commentid>
    <comment_count>17</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-09 17:28:47 -0700</bug_when>
    <thetext>Committed r282252 (241530@main): &lt;https://commits.webkit.org/241530@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 437645.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436810</attachid>
            <date>2021-08-30 14:00:57 -0700</date>
            <delta_ts>2021-08-30 21:26:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229686-20210830140056.patch</filename>
            <type>text/plain</type>
            <size>11585</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFmMDY1NzMyNGI4ZDQ5Y2Fi
N2VhYjgxNmYxODJlYjdjMDgxZTM0YzQuLjBlNDJjODA2NzkyMDFiOWRmNmZlNzJmOTFiZTUwNzBm
M2M0ZDE1NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMjEtMDgtMzAgIEJlbiBOaGFt
ICA8bmhhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUHJlY29ubmVjdGVkIHNvY2tldCBpcyBzb21l
dGltZXMgbm90IHVzZWQgZm9yIGluaXRpYWwgcmVxdWVzdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5Njg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVzY3JpcHRpb24gdG8gZm9sbG93LgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrTG9hZDo6ZGlkQ29tcGxldGVXaXRoRXJyb3IpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6aXNNYWluUmVz
b3VyY2VMb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRTY2hlZHVsZXI6OnNjaGVk
dWxlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRTY2hlZHVsZXI6OnVuc2NoZWR1bGUp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVMb2FkKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRTY2hlZHVsZXI6OnVuc2NoZWR1bGVMb2FkKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRTY2hlZHVsZXI6OnNjaGVkdWxlTWFpblJlc291
cmNlTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkU2NoZWR1bGVyOjp1bnNjaGVk
dWxlTWFpblJlc291cmNlTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkU2NoZWR1
bGVyOjpzdGFydGVkUHJlY29ubmVjdEZvck1haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtMb2FkU2NoZWR1bGVyOjpmaW5pc2hlZFByZWNvbm5lY3RGb3JNYWluUmVzb3VyY2Up
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZFNjaGVkdWxlcjo6aXNPcmlnaW5IVFRQMURv
dDEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZFNjaGVkdWxlcjo6dXBkYXRlT3JpZ2lu
UHJvdG9jb2xJbmZvKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFNjaGVk
dWxlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnByZWNvbm5lY3RUbyk6CisKIDIwMjEtMDgt
MjQgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBOb24tdW5pZmllZCBidWlsZCBmaXhlcywgbGF0ZSBBdWd1c3QgMjAyMQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAppbmRleCAzZTczMTExNzFhOTQwYjQ0
OTNlZDQ2YTFmZWQwNmI2NmZjMGI2MWQwLi4yYWEwMzc3MmZhNTliOGIzZTgyNDY2NzgwYTM1YmZl
NjRiMTIwZGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
LmNwcApAQCAtMjQ1LDcgKzI0NSw3IEBAIHZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRh
KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogdm9pZCBOZXR3b3JrTG9hZDo6ZGlkQ29tcGxl
dGVXaXRoRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IFdlYkNvcmU6Ok5l
dHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQogewogICAgIGlmIChtX3NjaGVk
dWxlcikgewotICAgICAgICBtX3NjaGVkdWxlci0+dW5zY2hlZHVsZSgqdGhpcyk7CisgICAgICAg
IG1fc2NoZWR1bGVyLT51bnNjaGVkdWxlKCp0aGlzLCAmbmV0d29ya0xvYWRNZXRyaWNzKTsKICAg
ICAgICAgbV9zY2hlZHVsZXIgPSBudWxscHRyOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFNjaGVkdWxlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkU2NoZWR1bGVyLmNwcAppbmRleCAxZTQ4
MGY1NGEyYWU2OTczMWU3NTM2MzdiZjA4ZDMwMTQyM2M3MmVmLi4yMWY1MjA4NDY4MWQwNTRiOWQ2
MjlmODBkOTBkMjcyNzRjOTk1Mjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtMb2FkU2NoZWR1bGVyLmNwcApAQCAtMjYsMTMgKzI2LDIwIEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWRTY2hlZHVsZXIuaCIKIAor
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrTG9hZC5oIgotI2luY2x1ZGUg
PHd0Zi9MaXN0SGFzaFNldC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RhdGljIGNvbnN0
ZXhwciBzaXplX3QgbWF4aW11bUFjdGl2ZUNvdW50Rm9yTG93UHJpb3JpdHkgPSAyOwogCitzdGF0
aWMgY29uc3RleHByIHNpemVfdCBtYXhpbXVtVHJhY2tlZEhUVFAxRG90MU9yaWdpbnMgPSAxMjg7
CisKK3N0YXRpYyBib29sIGlzTWFpblJlc291cmNlTG9hZChjb25zdCBOZXR3b3JrTG9hZCYgbG9h
ZCkKK3sKKyAgICByZXR1cm4gbG9hZC5wYXJhbWV0ZXJzKCkucmVxdWVzdC5yZXF1ZXN0ZXIoKSA9
PSBSZXNvdXJjZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6TWFpbjsKK30KKwogY2xhc3MgTmV0d29ya0xv
YWRTY2hlZHVsZXI6Okhvc3RDb250ZXh0IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKQEAgLTExNiw2ICsxMjMsMjIgQEAgTmV0d29ya0xvYWRTY2hlZHVsZXI6Ok5ldHdv
cmtMb2FkU2NoZWR1bGVyKCkgPSBkZWZhdWx0OwogTmV0d29ya0xvYWRTY2hlZHVsZXI6On5OZXR3
b3JrTG9hZFNjaGVkdWxlcigpID0gZGVmYXVsdDsKIAogdm9pZCBOZXR3b3JrTG9hZFNjaGVkdWxl
cjo6c2NoZWR1bGUoTmV0d29ya0xvYWQmIGxvYWQpCit7CisgICAgaWYgKGlzTWFpblJlc291cmNl
TG9hZChsb2FkKSkKKyAgICAgICAgc2NoZWR1bGVNYWluUmVzb3VyY2VMb2FkKGxvYWQpOworICAg
IGVsc2UKKyAgICAgICAgc2NoZWR1bGVMb2FkKGxvYWQpOworfQorCit2b2lkIE5ldHdvcmtMb2Fk
U2NoZWR1bGVyOjp1bnNjaGVkdWxlKE5ldHdvcmtMb2FkJiBsb2FkLCBjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrTG9hZE1ldHJpY3MqIG1ldHJpY3MpCit7CisgICAgaWYgKGlzTWFpblJlc291cmNlTG9h
ZChsb2FkKSkKKyAgICAgICAgdW5zY2hlZHVsZU1haW5SZXNvdXJjZUxvYWQobG9hZCwgbWV0cmlj
cyk7CisgICAgZWxzZQorICAgICAgICB1bnNjaGVkdWxlTG9hZChsb2FkKTsKK30KKwordm9pZCBO
ZXR3b3JrTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVMb2FkKE5ldHdvcmtMb2FkJiBsb2FkKQogewog
ICAgIGF1dG8qIGNvbnRleHQgPSBjb250ZXh0Rm9yTG9hZChsb2FkKTsKIApAQCAtMTI3LDEyICsx
NTAsMTAxIEBAIHZvaWQgTmV0d29ya0xvYWRTY2hlZHVsZXI6OnNjaGVkdWxlKE5ldHdvcmtMb2Fk
JiBsb2FkKQogICAgIGNvbnRleHQtPnNjaGVkdWxlKGxvYWQpOwogfQogCi12b2lkIE5ldHdvcmtM
b2FkU2NoZWR1bGVyOjp1bnNjaGVkdWxlKE5ldHdvcmtMb2FkJiBsb2FkKQordm9pZCBOZXR3b3Jr
TG9hZFNjaGVkdWxlcjo6dW5zY2hlZHVsZUxvYWQoTmV0d29ya0xvYWQmIGxvYWQpCiB7CiAgICAg
aWYgKGF1dG8qIGNvbnRleHQgPSBjb250ZXh0Rm9yTG9hZChsb2FkKSkKICAgICAgICAgY29udGV4
dC0+dW5zY2hlZHVsZShsb2FkKTsKIH0KIAordm9pZCBOZXR3b3JrTG9hZFNjaGVkdWxlcjo6c2No
ZWR1bGVNYWluUmVzb3VyY2VMb2FkKE5ldHdvcmtMb2FkJiBsb2FkKQoreworICAgIFN0cmluZyBw
cm90b2NvbEhvc3RBbmRQb3J0ID0gbG9hZC51cmwoKS5wcm90b2NvbEhvc3RBbmRQb3J0KCk7Cisg
ICAgaWYgKCFpc09yaWdpbkhUVFAxRG90MShwcm90b2NvbEhvc3RBbmRQb3J0KSkgeworICAgICAg
ICBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiTmV0d29ya0xvYWRTY2hlZHVsZXI6OnNjaGVkdWxlTWFp
blJlc291cmNlTG9hZCBmb3VuZCBub24tSFRUUC8xLjEgb3JpZ2luOyB3aWxsIGltbWVkaWF0ZWx5
IGxvYWQgJXtwdWJsaWN9cyIsIGxvYWQudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Cisg
ICAgICAgIGxvYWQuc3RhcnQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8g
aXRlciA9IG1fcGVuZGluZ01haW5SZXNvdXJjZVByZWNvbm5lY3RzLmZpbmQocHJvdG9jb2xIb3N0
QW5kUG9ydCk7CisgICAgaWYgKGl0ZXIgPT0gbV9wZW5kaW5nTWFpblJlc291cmNlUHJlY29ubmVj
dHMuZW5kKCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0coTmV0d29yaywgIk5ldHdvcmtMb2FkU2No
ZWR1bGVyOjpzY2hlZHVsZU1haW5SZXNvdXJjZUxvYWQgZm91bmQgbm8gcGVuZGluZyBwcmVjb25u
ZWN0OyB3aWxsIGltbWVkaWF0ZWx5IGxvYWQgJXtwdWJsaWN9cyIsIGxvYWQudXJsKCkuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGxvYWQuc3RhcnQoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIFBlbmRpbmdNYWluUmVzb3VyY2VQcmVjb25uZWN0SW5mbyYgaW5mbyA9
IGl0ZXItPnZhbHVlOworICAgIGluZm8ucGVuZGluZ0xvYWRzLmFkZCgmbG9hZCk7CisgICAgUkVM
RUFTRV9MT0coTmV0d29yaywgIk5ldHdvcmtMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZU1haW5SZXNv
dXJjZUxvYWQgZm91bmQgcGVuZGluZyBwcmVjb25uZWN0OyB3aWxsIGRlZmVyIGxvYWRpbmcgb2Yg
JXtwdWJsaWN9cyIsIGxvYWQudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Cit9CisKK3Zv
aWQgTmV0d29ya0xvYWRTY2hlZHVsZXI6OnVuc2NoZWR1bGVNYWluUmVzb3VyY2VMb2FkKE5ldHdv
cmtMb2FkJiBsb2FkLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MqIG1ldHJpY3Mp
Cit7CisgICAgU3RyaW5nIHByb3RvY29sSG9zdEFuZFBvcnQgPSBsb2FkLnVybCgpLnByb3RvY29s
SG9zdEFuZFBvcnQoKTsKKworICAgIGlmIChtZXRyaWNzKQorICAgICAgICB1cGRhdGVPcmlnaW5Q
cm90b2NvbEluZm8ocHJvdG9jb2xIb3N0QW5kUG9ydCwgbWV0cmljcy0+cHJvdG9jb2wpOworCisg
ICAgYXV0byBpdGVyID0gbV9wZW5kaW5nTWFpblJlc291cmNlUHJlY29ubmVjdHMuZmluZChwcm90
b2NvbEhvc3RBbmRQb3J0KTsKKyAgICBpZiAoaXRlciA9PSBtX3BlbmRpbmdNYWluUmVzb3VyY2VQ
cmVjb25uZWN0cy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUGVuZGluZ01haW5SZXNv
dXJjZVByZWNvbm5lY3RJbmZvJiBpbmZvID0gaXRlci0+dmFsdWU7CisgICAgaW5mby5wZW5kaW5n
TG9hZHMucmVtb3ZlKCZsb2FkKTsKK30KKwordm9pZCBOZXR3b3JrTG9hZFNjaGVkdWxlcjo6c3Rh
cnRlZFByZWNvbm5lY3RGb3JNYWluUmVzb3VyY2UoY29uc3QgVVJMJiB1cmwpCit7CisgICAgUkVM
RUFTRV9MT0coTmV0d29yaywgIk5ldHdvcmtMb2FkU2NoZWR1bGVyOjpzdGFydGVkUHJlY29ubmVj
dEZvck1haW5SZXNvdXJjZSAle3B1YmxpY31zIiwgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OworCisgICAgYXV0byBpdGVyID0gbV9wZW5kaW5nTWFpblJlc291cmNlUHJlY29ubmVjdHMuZmlu
ZCh1cmwucHJvdG9jb2xIb3N0QW5kUG9ydCgpKTsKKyAgICBpZiAoaXRlciAhPSBtX3BlbmRpbmdN
YWluUmVzb3VyY2VQcmVjb25uZWN0cy5lbmQoKSkgeworICAgICAgICBQZW5kaW5nTWFpblJlc291
cmNlUHJlY29ubmVjdEluZm8mIGluZm8gPSBpdGVyLT52YWx1ZTsKKyAgICAgICAgaW5mby5wZW5k
aW5nUHJlY29ubmVjdHMrKzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFBlbmRpbmdN
YWluUmVzb3VyY2VQcmVjb25uZWN0SW5mbyBpbmZvOworICAgIG1fcGVuZGluZ01haW5SZXNvdXJj
ZVByZWNvbm5lY3RzLmFkZCh1cmwucHJvdG9jb2xIb3N0QW5kUG9ydCgpLCBXVEZNb3ZlKGluZm8p
KTsKK30KKwordm9pZCBOZXR3b3JrTG9hZFNjaGVkdWxlcjo6ZmluaXNoZWRQcmVjb25uZWN0Rm9y
TWFpblJlc291cmNlKGNvbnN0IFVSTCYgdXJsKQoreworICAgIGF1dG8gaXRlciA9IG1fcGVuZGlu
Z01haW5SZXNvdXJjZVByZWNvbm5lY3RzLmZpbmQodXJsLnByb3RvY29sSG9zdEFuZFBvcnQoKSk7
CisgICAgaWYgKGl0ZXIgPT0gbV9wZW5kaW5nTWFpblJlc291cmNlUHJlY29ubmVjdHMuZW5kKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIFJFTEVBU0VfTE9HKE5ldHdvcmssICJOZXR3b3JrTG9h
ZFNjaGVkdWxlcjo6ZmluaXNoZWRQcmVjb25uZWN0Rm9yTWFpblJlc291cmNlICV7cHVibGljfXMi
LCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKKyAgICBQZW5kaW5nTWFpblJlc291cmNl
UHJlY29ubmVjdEluZm8mIGluZm8gPSBpdGVyLT52YWx1ZTsKKyAgICBpZiAoIWluZm8ucGVuZGlu
Z0xvYWRzLmlzRW1wdHkoKSkgeworICAgICAgICBOZXR3b3JrTG9hZCogbG9hZCA9IGluZm8ucGVu
ZGluZ0xvYWRzLnRha2VGaXJzdCgpOworICAgICAgICBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiTmV0
d29ya0xvYWRTY2hlZHVsZXI6OmZpbmlzaGVkUHJlY29ubmVjdEZvck1haW5SZXNvdXJjZSBmaXJp
bmcgb2ZmIGRlbGF5ZWQgbWFpbiByZXNvdXJjZSBsb2FkIHRvICV7cHVibGljfXMiLCBsb2FkLT51
cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgbG9hZC0+c3RhcnQoKTsKKyAg
ICB9CisKKyAgICBhdXRvIHBlbmRpbmdQcmVjb25uZWN0cyA9IC0taW5mby5wZW5kaW5nUHJlY29u
bmVjdHM7CisgICAgaWYgKCFwZW5kaW5nUHJlY29ubmVjdHMpCisgICAgICAgIG1fcGVuZGluZ01h
aW5SZXNvdXJjZVByZWNvbm5lY3RzLnJlbW92ZShpdGVyKTsKK30KKworYm9vbCBOZXR3b3JrTG9h
ZFNjaGVkdWxlcjo6aXNPcmlnaW5IVFRQMURvdDEoY29uc3QgU3RyaW5nJiBwcm90b2NvbEhvc3RB
bmRQb3J0KQoreworICAgIHJldHVybiBtX2h0dHAxRG90MU9yaWdpbnMuY29udGFpbnMocHJvdG9j
b2xIb3N0QW5kUG9ydCk7Cit9CisKK3ZvaWQgTmV0d29ya0xvYWRTY2hlZHVsZXI6OnVwZGF0ZU9y
aWdpblByb3RvY29sSW5mbyhjb25zdCBTdHJpbmcmIHByb3RvY29sSG9zdEFuZFBvcnQsIGNvbnN0
IFN0cmluZyYgYWxwblByb3RvY29sSUQpCit7CisgICAgaWYgKGFscG5Qcm90b2NvbElEICE9ICJo
dHRwLzEuMSJfcykgeworICAgICAgICBtX2h0dHAxRG90MU9yaWdpbnMucmVtb3ZlKHByb3RvY29s
SG9zdEFuZFBvcnQpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGlmIChtX2h0
dHAxRG90MU9yaWdpbnMuc2l6ZSgpID49IG1heGltdW1UcmFja2VkSFRUUDFEb3QxT3JpZ2lucykK
KyAgICAgICAgbV9odHRwMURvdDFPcmlnaW5zLnJlbW92ZShtX2h0dHAxRG90MU9yaWdpbnMucmFu
ZG9tKCkpOworICAgIAorICAgIG1faHR0cDFEb3QxT3JpZ2lucy5hZGQocHJvdG9jb2xIb3N0QW5k
UG9ydCk7Cit9CisKIHZvaWQgTmV0d29ya0xvYWRTY2hlZHVsZXI6OnNldFJlc291cmNlTG9hZFNj
aGVkdWxpbmdNb2RlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyLCBXZWJD
b3JlOjpMb2FkU2NoZWR1bGluZ01vZGUgbW9kZSkKIHsKICAgICBzd2l0Y2ggKG1vZGUpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRTY2hlZHVs
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRTY2hlZHVsZXIu
aAppbmRleCAyOTljODFhYzMyODlmODlmNzU0YTZjNmQxOTMzMTk3OGMyYjI2NzkyLi41YmE5OTkx
Y2FmMzQ3MGI4ODgxOTE5ZmM2NmQ2MmFiOTlkMDIwNjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkU2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFNjaGVkdWxlci5oCkBAIC0yNiw4ICsyNiwx
MSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxXZWJDb3JlL0xvYWRTY2hlZHVsaW5nTW9k
ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRNZXRyaWNzLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQxLDE4ICs0NCwz
OCBAQCBwdWJsaWM6CiAgICAgfk5ldHdvcmtMb2FkU2NoZWR1bGVyKCk7CiAKICAgICB2b2lkIHNj
aGVkdWxlKE5ldHdvcmtMb2FkJik7Ci0gICAgdm9pZCB1bnNjaGVkdWxlKE5ldHdvcmtMb2FkJik7
CisgICAgdm9pZCB1bnNjaGVkdWxlKE5ldHdvcmtMb2FkJiwgY29uc3QgV2ViQ29yZTo6TmV0d29y
a0xvYWRNZXRyaWNzKiA9IG51bGxwdHIpOworCisgICAgdm9pZCBzdGFydGVkUHJlY29ubmVjdEZv
ck1haW5SZXNvdXJjZShjb25zdCBVUkwmKTsKKyAgICB2b2lkIGZpbmlzaGVkUHJlY29ubmVjdEZv
ck1haW5SZXNvdXJjZShjb25zdCBVUkwmKTsKIAogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU2No
ZWR1bGluZ01vZGUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OkxvYWRTY2hlZHVs
aW5nTW9kZSk7CiAgICAgdm9pZCBwcmlvcml0aXplTG9hZHMoY29uc3QgVmVjdG9yPE5ldHdvcmtM
b2FkKj4mKTsKICAgICB2b2lkIGNsZWFyUGFnZURhdGEoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIp
OwogCiBwcml2YXRlOgorICAgIHZvaWQgc2NoZWR1bGVMb2FkKE5ldHdvcmtMb2FkJik7CisgICAg
dm9pZCB1bnNjaGVkdWxlTG9hZChOZXR3b3JrTG9hZCYpOworCisgICAgdm9pZCBzY2hlZHVsZU1h
aW5SZXNvdXJjZUxvYWQoTmV0d29ya0xvYWQmKTsKKyAgICB2b2lkIHVuc2NoZWR1bGVNYWluUmVz
b3VyY2VMb2FkKE5ldHdvcmtMb2FkJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNz
Kik7CisKKyAgICBib29sIGlzT3JpZ2luSFRUUDFEb3QxKGNvbnN0IFN0cmluZyYpOworICAgIHZv
aWQgdXBkYXRlT3JpZ2luUHJvdG9jb2xJbmZvKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYp
OworCiAgICAgY2xhc3MgSG9zdENvbnRleHQ7CiAgICAgSG9zdENvbnRleHQqIGNvbnRleHRGb3JM
b2FkKGNvbnN0IE5ldHdvcmtMb2FkJik7CiAKICAgICB1c2luZyBQYWdlQ29udGV4dCA9IEhhc2hN
YXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8SG9zdENvbnRleHQ+PjsKICAgICBIYXNoTWFwPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UGFnZUNvbnRleHQ+PiBtX3Bh
Z2VDb250ZXh0czsKKworICAgIHN0cnVjdCBQZW5kaW5nTWFpblJlc291cmNlUHJlY29ubmVjdElu
Zm8geworICAgICAgICBzaXplX3QgcGVuZGluZ1ByZWNvbm5lY3RzIHsxfTsKKyAgICAgICAgTGlz
dEhhc2hTZXQ8TmV0d29ya0xvYWQgKj4gcGVuZGluZ0xvYWRzOworICAgIH07CisgICAgSGFzaE1h
cDxTdHJpbmcsIFBlbmRpbmdNYWluUmVzb3VyY2VQcmVjb25uZWN0SW5mbz4gbV9wZW5kaW5nTWFp
blJlc291cmNlUHJlY29ubmVjdHM7CisKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9odHRwMURvdDFP
cmlnaW5zOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcAppbmRleCA1ZDY4MjliMjg4MDI1NGJkMDExMzEwYTlmZDI5ZDc4NWVkYjZl
MDU1Li40MWI5NjY3NDZiZTVjZDE0ZGFhNmM1ZmYxMTMzMTA0N2Y4NTA1MmZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMTM4MSw2
ICsxMzgxLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmkKICAgICBwYXJhbWV0ZXJzLnJlcXVl
c3QgPSBSZXNvdXJjZVJlcXVlc3QgeyB1cmwgfTsKICAgICBwYXJhbWV0ZXJzLnJlcXVlc3Quc2V0
SXNBcHBJbml0aWF0ZWQobGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgPT0gTGFzdE5hdmln
YXRpb25XYXNBcHBJbml0aWF0ZWQ6Olllcyk7CiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0LnNldEZp
cnN0UGFydHlGb3JDb29raWVzKHVybCk7CisgICAgcGFyYW1ldGVycy5yZXF1ZXN0LnNldFByaW9y
aXR5KFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5OjpWZXJ5SGlnaCk7CiAgICAgcGFyYW1l
dGVycy53ZWJQYWdlUHJveHlJRCA9IHdlYlBhZ2VQcm94eUlEOwogICAgIHBhcmFtZXRlcnMud2Vi
UGFnZUlEID0gd2ViUGFnZUlEOwogICAgIHBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbiA9IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CkBAIC0xMzkyLDcgKzEzOTMs
MTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmkKICAgICBwYXJhbWV0ZXJzLnN0b3JlZENyZWRl
bnRpYWxzUG9saWN5ID0gc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k7CiAgICAgcGFyYW1ldGVycy5z
aG91bGRQcmVjb25uZWN0T25seSA9IFByZWNvbm5lY3RPbmx5OjpZZXM7CiAKLSAgICAobmV3IFBy
ZWNvbm5lY3RUYXNrKCpuZXR3b3JrU2Vzc2lvbiwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW10oY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIHsgfSkpLT5zdGFydCgpOworICAgIG5ldHdvcmtT
ZXNzaW9uLT5uZXR3b3JrTG9hZFNjaGVkdWxlcigpLnN0YXJ0ZWRQcmVjb25uZWN0Rm9yTWFpblJl
c291cmNlKHVybCk7CisgICAgKG5ldyBQcmVjb25uZWN0VGFzaygqbmV0d29ya1Nlc3Npb24sIFdU
Rk1vdmUocGFyYW1ldGVycyksIFtuZXR3b3JrU2Vzc2lvbiwgdXJsXShjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJikgeworICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+bmV0d29ya0xvYWRTY2hl
ZHVsZXIoKS5maW5pc2hlZFByZWNvbm5lY3RGb3JNYWluUmVzb3VyY2UodXJsKTsKKyAgICB9KSkt
PnN0YXJ0KCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh1cmwpOwogICAgIFVOVVNFRF9QQVJB
TSh1c2VyQWdlbnQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436843</attachid>
            <date>2021-08-30 21:26:21 -0700</date>
            <delta_ts>2021-08-30 23:08:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229686-20210830212620.patch</filename>
            <type>text/plain</type>
            <size>25336</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFmMDY1NzMyNGI4ZDQ5Y2Fi
N2VhYjgxNmYxODJlYjdjMDgxZTM0YzQuLjBlNDJjODA2NzkyMDFiOWRmNmZlNzJmOTFiZTUwNzBm
M2M0ZDE1NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMjEtMDgtMzAgIEJlbiBOaGFt
ICA8bmhhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUHJlY29ubmVjdGVkIHNvY2tldCBpcyBzb21l
dGltZXMgbm90IHVzZWQgZm9yIGluaXRpYWwgcmVxdWVzdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5Njg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVzY3JpcHRpb24gdG8gZm9sbG93LgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrTG9hZDo6ZGlkQ29tcGxldGVXaXRoRXJyb3IpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6aXNNYWluUmVz
b3VyY2VMb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRTY2hlZHVsZXI6OnNjaGVk
dWxlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRTY2hlZHVsZXI6OnVuc2NoZWR1bGUp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVMb2FkKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRTY2hlZHVsZXI6OnVuc2NoZWR1bGVMb2FkKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRTY2hlZHVsZXI6OnNjaGVkdWxlTWFpblJlc291
cmNlTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkU2NoZWR1bGVyOjp1bnNjaGVk
dWxlTWFpblJlc291cmNlTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkU2NoZWR1
bGVyOjpzdGFydGVkUHJlY29ubmVjdEZvck1haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtMb2FkU2NoZWR1bGVyOjpmaW5pc2hlZFByZWNvbm5lY3RGb3JNYWluUmVzb3VyY2Up
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZFNjaGVkdWxlcjo6aXNPcmlnaW5IVFRQMURv
dDEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZFNjaGVkdWxlcjo6dXBkYXRlT3JpZ2lu
UHJvdG9jb2xJbmZvKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFNjaGVk
dWxlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnByZWNvbm5lY3RUbyk6CisKIDIwMjEtMDgt
MjQgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBOb24tdW5pZmllZCBidWlsZCBmaXhlcywgbGF0ZSBBdWd1c3QgMjAyMQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAppbmRleCAzZTczMTExNzFhOTQwYjQ0
OTNlZDQ2YTFmZWQwNmI2NmZjMGI2MWQwLi4yYWEwMzc3MmZhNTliOGIzZTgyNDY2NzgwYTM1YmZl
NjRiMTIwZGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
LmNwcApAQCAtMjQ1LDcgKzI0NSw3IEBAIHZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRh
KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogdm9pZCBOZXR3b3JrTG9hZDo6ZGlkQ29tcGxl
dGVXaXRoRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IFdlYkNvcmU6Ok5l
dHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQogewogICAgIGlmIChtX3NjaGVk
dWxlcikgewotICAgICAgICBtX3NjaGVkdWxlci0+dW5zY2hlZHVsZSgqdGhpcyk7CisgICAgICAg
IG1fc2NoZWR1bGVyLT51bnNjaGVkdWxlKCp0aGlzLCAmbmV0d29ya0xvYWRNZXRyaWNzKTsKICAg
ICAgICAgbV9zY2hlZHVsZXIgPSBudWxscHRyOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFNjaGVkdWxlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkU2NoZWR1bGVyLmNwcAppbmRleCAxZTQ4
MGY1NGEyYWU2OTczMWU3NTM2MzdiZjA4ZDMwMTQyM2M3MmVmLi5kNTIyZjUxODEwMzM4YWJjZGU2
NDcwOGVlMjBhMTQ4YTI0NjhlNWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtMb2FkU2NoZWR1bGVyLmNwcApAQCAtMjYsMTIgKzI2LDEzIEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWRTY2hlZHVsZXIuaCIKIAor
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrTG9hZC5oIgotI2luY2x1ZGUg
PHd0Zi9MaXN0SGFzaFNldC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RhdGljIGNvbnN0
ZXhwciBzaXplX3QgbWF4aW11bUFjdGl2ZUNvdW50Rm9yTG93UHJpb3JpdHkgPSAyOworc3RhdGlj
IGNvbnN0ZXhwciBzaXplX3QgbWF4aW11bVRyYWNrZWRIVFRQMVhPcmlnaW5zID0gMTI4OwogCiBj
bGFzcyBOZXR3b3JrTG9hZFNjaGVkdWxlcjo6SG9zdENvbnRleHQgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwpAQCAtMTE2LDYgKzExNywyNCBAQCBOZXR3b3JrTG9hZFNjaGVkdWxlcjo6
TmV0d29ya0xvYWRTY2hlZHVsZXIoKSA9IGRlZmF1bHQ7CiBOZXR3b3JrTG9hZFNjaGVkdWxlcjo6
fk5ldHdvcmtMb2FkU2NoZWR1bGVyKCkgPSBkZWZhdWx0OwogCiB2b2lkIE5ldHdvcmtMb2FkU2No
ZWR1bGVyOjpzY2hlZHVsZShOZXR3b3JrTG9hZCYgbG9hZCkKK3sKKyAgICBib29sIGlzTWFpbkZy
YW1lTWFpblJlc291cmNlID0gbG9hZC5jdXJyZW50UmVxdWVzdCgpLmlzVG9wU2l0ZSgpOworICAg
IGlmIChpc01haW5GcmFtZU1haW5SZXNvdXJjZSkKKyAgICAgICAgc2NoZWR1bGVNYWluUmVzb3Vy
Y2VMb2FkKGxvYWQpOworICAgIGVsc2UKKyAgICAgICAgc2NoZWR1bGVMb2FkKGxvYWQpOworfQor
Cit2b2lkIE5ldHdvcmtMb2FkU2NoZWR1bGVyOjp1bnNjaGVkdWxlKE5ldHdvcmtMb2FkJiBsb2Fk
LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MqIG1ldHJpY3MpCit7CisgICAgYm9v
bCBpc01haW5GcmFtZU1haW5SZXNvdXJjZSA9IGxvYWQuY3VycmVudFJlcXVlc3QoKS5pc1RvcFNp
dGUoKTsKKyAgICBpZiAoaXNNYWluRnJhbWVNYWluUmVzb3VyY2UpCisgICAgICAgIHVuc2NoZWR1
bGVNYWluUmVzb3VyY2VMb2FkKGxvYWQsIG1ldHJpY3MpOworICAgIGVsc2UKKyAgICAgICAgdW5z
Y2hlZHVsZUxvYWQobG9hZCk7Cit9CisKK3ZvaWQgTmV0d29ya0xvYWRTY2hlZHVsZXI6OnNjaGVk
dWxlTG9hZChOZXR3b3JrTG9hZCYgbG9hZCkKIHsKICAgICBhdXRvKiBjb250ZXh0ID0gY29udGV4
dEZvckxvYWQobG9hZCk7CiAKQEAgLTEyNywxMiArMTQ2LDk1IEBAIHZvaWQgTmV0d29ya0xvYWRT
Y2hlZHVsZXI6OnNjaGVkdWxlKE5ldHdvcmtMb2FkJiBsb2FkKQogICAgIGNvbnRleHQtPnNjaGVk
dWxlKGxvYWQpOwogfQogCi12b2lkIE5ldHdvcmtMb2FkU2NoZWR1bGVyOjp1bnNjaGVkdWxlKE5l
dHdvcmtMb2FkJiBsb2FkKQordm9pZCBOZXR3b3JrTG9hZFNjaGVkdWxlcjo6dW5zY2hlZHVsZUxv
YWQoTmV0d29ya0xvYWQmIGxvYWQpCiB7CiAgICAgaWYgKGF1dG8qIGNvbnRleHQgPSBjb250ZXh0
Rm9yTG9hZChsb2FkKSkKICAgICAgICAgY29udGV4dC0+dW5zY2hlZHVsZShsb2FkKTsKIH0KIAor
dm9pZCBOZXR3b3JrTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVNYWluUmVzb3VyY2VMb2FkKE5ldHdv
cmtMb2FkJiBsb2FkKQoreworICAgIFN0cmluZyBwcm90b2NvbEhvc3RBbmRQb3J0ID0gbG9hZC51
cmwoKS5wcm90b2NvbEhvc3RBbmRQb3J0KCk7CisgICAgaWYgKCFpc09yaWdpbkhUVFAxWChwcm90
b2NvbEhvc3RBbmRQb3J0KSkgeworICAgICAgICBsb2FkLnN0YXJ0KCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBhdXRvIGl0ZXIgPSBtX3BlbmRpbmdNYWluUmVzb3VyY2VQcmVjb25u
ZWN0cy5maW5kKHByb3RvY29sSG9zdEFuZFBvcnQpOworICAgIGlmIChpdGVyID09IG1fcGVuZGlu
Z01haW5SZXNvdXJjZVByZWNvbm5lY3RzLmVuZCgpKSB7CisgICAgICAgIGxvYWQuc3RhcnQoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFBlbmRpbmdNYWluUmVzb3VyY2VQcmVjb25u
ZWN0SW5mbyYgaW5mbyA9IGl0ZXItPnZhbHVlOworICAgIGluZm8ucGVuZGluZ0xvYWRzLmFkZCgm
bG9hZCk7CisgICAgUkVMRUFTRV9MT0coTmV0d29yaywgIiVwIC0gTmV0d29ya0xvYWRTY2hlZHVs
ZXI6OnNjaGVkdWxlTWFpblJlc291cmNlTG9hZCBmb3VuZCBwZW5kaW5nIHByZWNvbm5lY3QgYW5k
IGRlZmVycmVkIGxvYWQgb2YgJXAiLCB0aGlzLCAmbG9hZCk7Cit9CisKK3ZvaWQgTmV0d29ya0xv
YWRTY2hlZHVsZXI6OnVuc2NoZWR1bGVNYWluUmVzb3VyY2VMb2FkKE5ldHdvcmtMb2FkJiBsb2Fk
LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MqIG1ldHJpY3MpCit7CisgICAgU3Ry
aW5nIHByb3RvY29sSG9zdEFuZFBvcnQgPSBsb2FkLnVybCgpLnByb3RvY29sSG9zdEFuZFBvcnQo
KTsKKworICAgIGlmIChtZXRyaWNzKQorICAgICAgICB1cGRhdGVPcmlnaW5Qcm90b2NvbEluZm8o
cHJvdG9jb2xIb3N0QW5kUG9ydCwgbWV0cmljcy0+cHJvdG9jb2wpOworCisgICAgYXV0byBpdGVy
ID0gbV9wZW5kaW5nTWFpblJlc291cmNlUHJlY29ubmVjdHMuZmluZChwcm90b2NvbEhvc3RBbmRQ
b3J0KTsKKyAgICBpZiAoaXRlciA9PSBtX3BlbmRpbmdNYWluUmVzb3VyY2VQcmVjb25uZWN0cy5l
bmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUGVuZGluZ01haW5SZXNvdXJjZVByZWNvbm5l
Y3RJbmZvJiBpbmZvID0gaXRlci0+dmFsdWU7CisgICAgaW5mby5wZW5kaW5nTG9hZHMucmVtb3Zl
KCZsb2FkKTsKK30KKwordm9pZCBOZXR3b3JrTG9hZFNjaGVkdWxlcjo6c3RhcnRlZFByZWNvbm5l
Y3RGb3JNYWluUmVzb3VyY2UoY29uc3QgVVJMJiB1cmwpCit7CisgICAgYXV0byBpdGVyID0gbV9w
ZW5kaW5nTWFpblJlc291cmNlUHJlY29ubmVjdHMuZmluZCh1cmwucHJvdG9jb2xIb3N0QW5kUG9y
dCgpKTsKKyAgICBpZiAoaXRlciAhPSBtX3BlbmRpbmdNYWluUmVzb3VyY2VQcmVjb25uZWN0cy5l
bmQoKSkgeworICAgICAgICBQZW5kaW5nTWFpblJlc291cmNlUHJlY29ubmVjdEluZm8mIGluZm8g
PSBpdGVyLT52YWx1ZTsKKyAgICAgICAgaW5mby5wZW5kaW5nUHJlY29ubmVjdHMrKzsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIFBlbmRpbmdNYWluUmVzb3VyY2VQcmVjb25uZWN0SW5m
byBpbmZvOworICAgIG1fcGVuZGluZ01haW5SZXNvdXJjZVByZWNvbm5lY3RzLmFkZCh1cmwucHJv
dG9jb2xIb3N0QW5kUG9ydCgpLCBXVEZNb3ZlKGluZm8pKTsKK30KKwordm9pZCBOZXR3b3JrTG9h
ZFNjaGVkdWxlcjo6ZmluaXNoZWRQcmVjb25uZWN0Rm9yTWFpblJlc291cmNlKGNvbnN0IFVSTCYg
dXJsKQoreworICAgIGF1dG8gaXRlciA9IG1fcGVuZGluZ01haW5SZXNvdXJjZVByZWNvbm5lY3Rz
LmZpbmQodXJsLnByb3RvY29sSG9zdEFuZFBvcnQoKSk7CisgICAgaWYgKGl0ZXIgPT0gbV9wZW5k
aW5nTWFpblJlc291cmNlUHJlY29ubmVjdHMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IFBlbmRpbmdNYWluUmVzb3VyY2VQcmVjb25uZWN0SW5mbyYgaW5mbyA9IGl0ZXItPnZhbHVlOwor
ICAgIGlmICghaW5mby5wZW5kaW5nTG9hZHMuaXNFbXB0eSgpKSB7CisgICAgICAgIE5ldHdvcmtM
b2FkKiBsb2FkID0gaW5mby5wZW5kaW5nTG9hZHMudGFrZUZpcnN0KCk7CisgICAgICAgIFJFTEVB
U0VfTE9HKE5ldHdvcmssICJOZXR3b3JrTG9hZFNjaGVkdWxlcjo6ZmluaXNoZWRQcmVjb25uZWN0
Rm9yTWFpblJlc291cmNlIHN0YXJ0aW5nIGRlbGF5ZWQgbWFpbiByZXNvdXJjZSBsb2FkICVwIiwg
JmxvYWQpOworICAgICAgICBsb2FkLT5zdGFydCgpOworICAgIH0KKworICAgIGF1dG8gcGVuZGlu
Z1ByZWNvbm5lY3RzID0gLS1pbmZvLnBlbmRpbmdQcmVjb25uZWN0czsKKyAgICBpZiAoIXBlbmRp
bmdQcmVjb25uZWN0cykKKyAgICAgICAgbV9wZW5kaW5nTWFpblJlc291cmNlUHJlY29ubmVjdHMu
cmVtb3ZlKGl0ZXIpOworfQorCitib29sIE5ldHdvcmtMb2FkU2NoZWR1bGVyOjppc09yaWdpbkhU
VFAxWChjb25zdCBTdHJpbmcmIHByb3RvY29sSG9zdEFuZFBvcnQpCit7CisgICAgcmV0dXJuIG1f
aHR0cDFYT3JpZ2lucy5jb250YWlucyhwcm90b2NvbEhvc3RBbmRQb3J0KTsKK30KKwordm9pZCBO
ZXR3b3JrTG9hZFNjaGVkdWxlcjo6dXBkYXRlT3JpZ2luUHJvdG9jb2xJbmZvKGNvbnN0IFN0cmlu
ZyYgcHJvdG9jb2xIb3N0QW5kUG9ydCwgY29uc3QgU3RyaW5nJiBhbHBuUHJvdG9jb2xJRCkKK3sK
KyAgICBpZiAoYWxwblByb3RvY29sSUQgIT0gImh0dHAvMS4xIl9zKSB7CisgICAgICAgIG1faHR0
cDFYT3JpZ2lucy5yZW1vdmUocHJvdG9jb2xIb3N0QW5kUG9ydCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpZiAobV9odHRwMVhPcmlnaW5zLnNpemUoKSA+PSBtYXhpbXVtVHJhY2tl
ZEhUVFAxWE9yaWdpbnMpCisgICAgICAgIG1faHR0cDFYT3JpZ2lucy5yZW1vdmUobV9odHRwMVhP
cmlnaW5zLnJhbmRvbSgpKTsKKworICAgIG1faHR0cDFYT3JpZ2lucy5hZGQocHJvdG9jb2xIb3N0
QW5kUG9ydCk7Cit9CisKIHZvaWQgTmV0d29ya0xvYWRTY2hlZHVsZXI6OnNldFJlc291cmNlTG9h
ZFNjaGVkdWxpbmdNb2RlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyLCBX
ZWJDb3JlOjpMb2FkU2NoZWR1bGluZ01vZGUgbW9kZSkKIHsKICAgICBzd2l0Y2ggKG1vZGUpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRTY2hl
ZHVsZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRTY2hlZHVs
ZXIuaAppbmRleCAyOTljODFhYzMyODlmODlmNzU0YTZjNmQxOTMzMTk3OGMyYjI2NzkyLi45Njgx
NWY0MjNhNWY2ZGIwYjM4YjU0OWNmMzU4OWExZWUyZmE3YmYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkU2NoZWR1bGVyLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFNjaGVkdWxlci5oCkBAIC0yNiw4ICsy
NiwxMSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxXZWJDb3JlL0xvYWRTY2hlZHVsaW5n
TW9kZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRNZXRyaWNzLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Cisj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQxLDE4ICs0
NCwzOCBAQCBwdWJsaWM6CiAgICAgfk5ldHdvcmtMb2FkU2NoZWR1bGVyKCk7CiAKICAgICB2b2lk
IHNjaGVkdWxlKE5ldHdvcmtMb2FkJik7Ci0gICAgdm9pZCB1bnNjaGVkdWxlKE5ldHdvcmtMb2Fk
Jik7CisgICAgdm9pZCB1bnNjaGVkdWxlKE5ldHdvcmtMb2FkJiwgY29uc3QgV2ViQ29yZTo6TmV0
d29ya0xvYWRNZXRyaWNzKiA9IG51bGxwdHIpOworCisgICAgdm9pZCBzdGFydGVkUHJlY29ubmVj
dEZvck1haW5SZXNvdXJjZShjb25zdCBVUkwmKTsKKyAgICB2b2lkIGZpbmlzaGVkUHJlY29ubmVj
dEZvck1haW5SZXNvdXJjZShjb25zdCBVUkwmKTsKIAogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2Fk
U2NoZWR1bGluZ01vZGUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OkxvYWRTY2hl
ZHVsaW5nTW9kZSk7CiAgICAgdm9pZCBwcmlvcml0aXplTG9hZHMoY29uc3QgVmVjdG9yPE5ldHdv
cmtMb2FkKj4mKTsKICAgICB2b2lkIGNsZWFyUGFnZURhdGEoV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIpOwogCiBwcml2YXRlOgorICAgIHZvaWQgc2NoZWR1bGVMb2FkKE5ldHdvcmtMb2FkJik7Cisg
ICAgdm9pZCB1bnNjaGVkdWxlTG9hZChOZXR3b3JrTG9hZCYpOworCisgICAgdm9pZCBzY2hlZHVs
ZU1haW5SZXNvdXJjZUxvYWQoTmV0d29ya0xvYWQmKTsKKyAgICB2b2lkIHVuc2NoZWR1bGVNYWlu
UmVzb3VyY2VMb2FkKE5ldHdvcmtMb2FkJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRy
aWNzKik7CisKKyAgICBib29sIGlzT3JpZ2luSFRUUDFYKGNvbnN0IFN0cmluZyYpOworICAgIHZv
aWQgdXBkYXRlT3JpZ2luUHJvdG9jb2xJbmZvKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYp
OworCiAgICAgY2xhc3MgSG9zdENvbnRleHQ7CiAgICAgSG9zdENvbnRleHQqIGNvbnRleHRGb3JM
b2FkKGNvbnN0IE5ldHdvcmtMb2FkJik7CiAKICAgICB1c2luZyBQYWdlQ29udGV4dCA9IEhhc2hN
YXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8SG9zdENvbnRleHQ+PjsKICAgICBIYXNoTWFwPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UGFnZUNvbnRleHQ+PiBtX3Bh
Z2VDb250ZXh0czsKKworICAgIHN0cnVjdCBQZW5kaW5nTWFpblJlc291cmNlUHJlY29ubmVjdElu
Zm8geworICAgICAgICBzaXplX3QgcGVuZGluZ1ByZWNvbm5lY3RzIHsxfTsKKyAgICAgICAgTGlz
dEhhc2hTZXQ8TmV0d29ya0xvYWQgKj4gcGVuZGluZ0xvYWRzOworICAgIH07CisgICAgSGFzaE1h
cDxTdHJpbmcsIFBlbmRpbmdNYWluUmVzb3VyY2VQcmVjb25uZWN0SW5mbz4gbV9wZW5kaW5nTWFp
blJlc291cmNlUHJlY29ubmVjdHM7CisKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9odHRwMVhPcmln
aW5zOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcAppbmRleCA1ZDY4MjliMjg4MDI1NGJkMDExMzEwYTlmZDI5ZDc4NWVkYjZlMDU1
Li5iNTc4MWMzZjczYjQ4YjhkNzI0ZGRjM2ExNWUyMmYxYjlkNGQxMzRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMTM2Myw3ICsx
MzYzLDcgQEAgYm9vbCBOZXR3b3JrUHJvY2Vzczo6cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1
Z01vZGVFbmFibGVkKCkgY29uc3QKICAgICByZXR1cm4gbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dERlYnVnTW9kZUVuYWJsZWQ7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZWNvbm5lY3RU
byhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFn
ZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1Bv
bGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgTGFzdE5hdmlnYXRp
b25XYXNBcHBJbml0aWF0ZWQgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpCit2b2lkIE5l
dHdvcmtQcm9jZXNzOjpwcmVjb25uZWN0VG8oY29uc3QgVVJMJiB1cmwsIFByZWNvbm5lY3RSZWFz
b24gcmVhc29uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgY29u
c3QgU3RyaW5nJiB1c2VyQWdlbnQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0
b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBMYXN0TmF2aWdhdGlvbldhc0Fw
cEluaXRpYXRlZCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCkKIHsKICAgICBMT0coTmV0
d29yaywgIihOZXR3b3JrUHJvY2VzcykgUHJlY29ubmVjdGluZyB0byBVUkwgJXMgKHN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5ICVpKSIsIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCAoaW50KXN0
b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKIApAQCAtMTM5Miw3ICsxMzkyLDE1IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OnByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYlBh
Z2VQcm94eUlkZW50aWZpCiAgICAgcGFyYW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9
IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5OwogICAgIHBhcmFtZXRlcnMuc2hvdWxkUHJlY29ubmVj
dE9ubHkgPSBQcmVjb25uZWN0T25seTo6WWVzOwogCi0gICAgKG5ldyBQcmVjb25uZWN0VGFzaygq
bmV0d29ya1Nlc3Npb24sIFdURk1vdmUocGFyYW1ldGVycyksIFtdKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKSB7IH0pKS0+c3RhcnQoKTsKKyAgICBpZiAocmVhc29uID09IFByZWNvbm5l
Y3RSZWFzb246Ok1haW5SZXNvdXJjZUxvYWQpIHsKKyAgICAgICAgcGFyYW1ldGVycy5yZXF1ZXN0
LnNldFByaW9yaXR5KFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5OjpWZXJ5SGlnaCk7Cisg
ICAgICAgIG5ldHdvcmtTZXNzaW9uLT5uZXR3b3JrTG9hZFNjaGVkdWxlcigpLnN0YXJ0ZWRQcmVj
b25uZWN0Rm9yTWFpblJlc291cmNlKHVybCk7CisgICAgfQorCisgICAgKG5ldyBQcmVjb25uZWN0
VGFzaygqbmV0d29ya1Nlc3Npb24sIFdURk1vdmUocGFyYW1ldGVycyksIFtyZWFzb24sIG5ldHdv
cmtTZXNzaW9uLCB1cmxdKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSB7CisgICAgICAg
IGlmIChyZWFzb24gPT0gUHJlY29ubmVjdFJlYXNvbjo6TWFpblJlc291cmNlTG9hZCkKKyAgICAg
ICAgICAgIG5ldHdvcmtTZXNzaW9uLT5uZXR3b3JrTG9hZFNjaGVkdWxlcigpLmZpbmlzaGVkUHJl
Y29ubmVjdEZvck1haW5SZXNvdXJjZSh1cmwpOworICAgIH0pKS0+c3RhcnQoKTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKHVybCk7CiAgICAgVU5VU0VEX1BBUkFNKHVzZXJBZ2VudCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggZWE5MWVk
NTk0MDNlNDlmZTI3ZGE2ODE5MzE2NzFlOTZmZjdiZjlhNy4uNDdlMTA5MjgxYzJkMzNlMzAwY2E2
ZGQ0ZDdmZDMxYWRhYjJlMjFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkRvd25sb2FkTWFu
YWdlci5oIgogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oIgogI2luY2x1
ZGUgIk5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmgiCisjaW5jbHVkZSAiUHJlY29ubmVj
dFJlYXNvbi5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5Lmgi
CiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIldlYklEQlNlcnZlci5o
IgpAQCAtMjkxLDcgKzI5Miw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBDYWNoZVN0b3JhZ2VSb290
UGF0aENhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+OwogICAgIHZv
aWQgY2FjaGVTdG9yYWdlUm9vdFBhdGgoUEFMOjpTZXNzaW9uSUQsIENhY2hlU3RvcmFnZVJvb3RQ
YXRoQ2FsbGJhY2smJik7CiAKLSAgICB2b2lkIHByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCwg
V2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFVS
TCYsIGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzdGQ6
Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgTGFzdE5hdmlnYXRpb25XYXNB
cHBJbml0aWF0ZWQpOworICAgIHZvaWQgcHJlY29ubmVjdFRvKGNvbnN0IFVSTCYsIFByZWNvbm5l
Y3RSZWFzb24sIFBBTDo6U2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBMYXN0
TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk7CiAKICAgICB2b2lkIHNldFNlc3Npb25Jc0NvbnRy
b2xsZWRCeUF1dG9tYXRpb24oUEFMOjpTZXNzaW9uSUQsIGJvb2wpOwogICAgIGJvb2wgc2Vzc2lv
bklzQ29udHJvbGxlZEJ5QXV0b21hdGlvbihQQUw6OlNlc3Npb25JRCkgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdl
cy5pbgppbmRleCBkNzk5NzQ1MWM0NTQwY2MzZDc1NjUzNDhjNzZhMjM0NDkxMzgyZjlhLi4wMWIz
OTMwYWNhYjFjNzAzNDU4NzVjMDRjMmRjZWU1MDIxZTJiMzRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAg
LTc0LDcgKzc0LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIg
ewogICAgIFByZXBhcmVUb1N1c3BlbmQoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCkgLT4gKCkg
QXN5bmMKICAgICBQcm9jZXNzRGlkUmVzdW1lKCkKIAotICAgIFByZWNvbm5lY3RUbyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdl
UHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBVUkwgdXJsLCBTdHJp
bmcgdXNlckFnZW50LCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGVudW06Ym9vbCBzdGQ6Om9wdGlvbmFsPFdlYktp
dDo6TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4sIGVudW06Ym9vbCBXZWJLaXQ6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIGxhc3RO
YXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKTsKKyAgICBQcmVjb25uZWN0VG8oVVJMIHVybCwgZW51
bTp1aW50OF90IFdlYktpdDo6UHJlY29ubmVjdFJlYXNvbiByZWFzb24sIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlE
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIFN0cmluZyB1c2VyQWdlbnQsIGVu
dW06dWludDhfdCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50
aWFsc1BvbGljeSwgZW51bTpib29sIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgZW51bTpib29sIFdl
YktpdDo6TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgbGFzdE5hdmlnYXRpb25XYXNBcHBJ
bml0aWF0ZWQpOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBD
bGVhclByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VEb21haW4pIC0+ICgpIEFzeW5jCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RSZWFzb24uaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFJlYXNvbi5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUw
NWZmNDUxZjUxODkxM2M3YzA1ODAzMmFmOThkMzY0M2EwMzI0MDAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RSZWFzb24uaApAQCAtMCww
ICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxzdGRpbnQu
aD4KKyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
ZW51bSBjbGFzcyBQcmVjb25uZWN0UmVhc29uIDogdWludDhfdCB7CisgICAgTWFpblJlc291cmNl
TG9hZCwKKyAgICBBUElIaW50Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworbmFtZXNw
YWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViS2l0OjpQcmVjb25u
ZWN0UmVhc29uPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICBXZWJLaXQ6
OlByZWNvbm5lY3RSZWFzb24sCisgICAgV2ViS2l0OjpQcmVjb25uZWN0UmVhc29uOjpNYWluUmVz
b3VyY2VMb2FkLAorICAgIFdlYktpdDo6UHJlY29ubmVjdFJlYXNvbjo6QVBJSGludAorICAgID47
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggM2YxZDQ2NDhiNzk1NzU1NDNjZTczMjQxM2Fm
MTE5MjQwZWI2MGUwOC4uYjdjZGE5ZTI3NGRlMmNjZGMzZDBmNDNlODc0MDkxOTA2MGZlNzIwNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBA
IC0zMjM5LDcgKzMyMzksNyBAQCBzdGF0aWMgaW5saW5lIE9wdGlvblNldDxXZWJLaXQ6OkZpbmRP
cHRpb25zPiB0b0ZpbmRPcHRpb25zKF9XS0ZpbmRPcHRpb25zIHdrRmluZAogLSAodm9pZClfcHJl
Y29ubmVjdFRvU2VydmVyOihOU1VSTCAqKXVybAogewogICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsK
LSAgICBfcGFnZS0+cHJlY29ubmVjdFRvKHVybCk7CisgICAgX3BhZ2UtPnByZWNvbm5lY3RUbyh1
cmwsIFdlYktpdDo6UHJlY29ubmVjdFJlYXNvbjo6QVBJSGludCk7CiB9CiAKIC0gKEJPT0wpX2Nh
blVzZUNyZWRlbnRpYWxTdG9yYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA2NzFhZGQ0YWEyN2NkMTdl
YmI2NzkwZWZlMTZhNTVhMWMxNDM2NmViLi40OWJhNjI5ZDhkOWUxOWVkM2YwMDYyZDE4YzYxZTRm
YTkyNTZiODZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTE1MDQsMTEgKzE1MDQsMTEgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRMb2NhbFN0b3JhZ2VEZXRhaWxzKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgQ29tcGwKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzOjpHZXRMb2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKHNlc3Npb25JRCksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpw
cmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgV2ViQ29yZTo6U3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8TmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIExh
c3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVk
KQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpwcmVjb25uZWN0VG8oY29uc3QgVVJMJiB1cmws
IFByZWNvbm5lY3RSZWFzb24gcmVhc29uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFdlYkNvcmU6OlN0b3JlZENyZWRl
bnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBMYXN0
TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCkK
IHsKICAgICBpZiAoIXVybC5pc1ZhbGlkKCkgfHwgIXVybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5
KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6
UHJlY29ubmVjdFRvKHNlc3Npb25JRCwgd2ViUGFnZVByb3h5SUQsIHdlYlBhZ2VJRCwgdXJsLCB1
c2VyQWdlbnQsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluLCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCksIDApOworICAgIHNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpQcmVjb25uZWN0VG8odXJsLCByZWFzb24sIHNlc3Npb25J
RCwgd2ViUGFnZVByb3h5SUQsIHdlYlBhZ2VJRCwgdXNlckFnZW50LCBzdG9yZWRDcmVkZW50aWFs
c1BvbGljeSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgbGFzdE5hdmlnYXRpb25XYXNB
cHBJbml0aWF0ZWQpLCAwKTsKIH0KIAogc3RhdGljIGJvb2wgYW55UHJvY2Vzc1Bvb2xIYXNGb3Jl
Z3JvdW5kV2ViUHJvY2Vzc2VzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggNThhOGE4ZTk0YmYzY2ZlN2JmOGM3
Nzk3OTg1Y2MxMmJkM2FiNjhiZS4uYTcyMmFkNTQ0NzFjYWI2ZGExZTk0MmU2ZDZkNGU0ZWE0ZGNh
ZWI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJBdXhpbGlhcnlQ
cm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJDYWxsYmFja0lELmgiCiAjaW5jbHVkZSAiTmV0d29y
a1Byb2Nlc3NQcm94eU1lc3NhZ2VzUmVwbGllcy5oIgorI2luY2x1ZGUgIlByZWNvbm5lY3RSZWFz
b24uaCIKICNpbmNsdWRlICJQcm9jZXNzTGF1bmNoZXIuaCIKICNpbmNsdWRlICJQcm9jZXNzVGhy
b3R0bGVyLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90dGxlckNsaWVudC5oIgpAQCAtMTI5LDcg
KzEzMCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0TG9jYWxTdG9yYWdlRGV0YWlscyhQQUw6
OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8TG9jYWxTdG9yYWdlRGF0
YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzPiYmKT4mJik7CiAKLSAgICB2b2lkIHByZWNvbm5l
Y3RUbyhQQUw6OlNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OlN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
PiwgTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpOworICAgIHZvaWQgcHJlY29ubmVjdFRv
KGNvbnN0IFVSTCYsIFByZWNvbm5lY3RSZWFzb24sIFBBTDo6U2Vzc2lvbklELCBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgV2Vi
Q29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4+LCBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk7CiAKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIHZvaWQgY2xlYXJQcmV2YWxlbnRS
ZXNvdXJjZShQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKaW5kZXggYWM5YTc3NDhmM2UwZDcyYzM3ZmY4NGQ0Yjg0MGYwYjVlN2Y5NDc1Yi4uOTAz
NTY4M2Y2YzcxN2FjOWNhODUzOTFkYWFiMTNjMGRjY2VmNjgyMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xNDA4LDcgKzE0MDgsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmIHByb2NlcwogCiAgICAgYWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhwcm9jZXNzLCBs
b2FkUGFyYW1ldGVycyk7CiAKLSAgICBwcmVjb25uZWN0VG8odXJsKTsKKyAgICBwcmVjb25uZWN0
VG8odXJsLCBQcmVjb25uZWN0UmVhc29uOjpNYWluUmVzb3VyY2VMb2FkKTsKIAogICAgIG5hdmln
YXRpb24uc2V0SXNMb2FkZWRXaXRoTmF2aWdhdGlvblNoYXJlZCh0cnVlKTsKIApAQCAtNDU4MSwx
NCArNDU4MSwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TmV0d29ya1JlcXVlc3RzSW5Qcm9n
cmVzcyhib29sIG5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MpCiAgICAgbV9wYWdlTG9hZFN0YXRl
LnNldE5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3ModHJhbnNhY3Rpb24sIG5ldHdvcmtSZXF1ZXN0
c0luUHJvZ3Jlc3MpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cHJlY29ubmVjdFRvKGNvbnN0
IFVSTCYgdXJsKQordm9pZCBXZWJQYWdlUHJveHk6OnByZWNvbm5lY3RUbyhjb25zdCBVUkwmIHVy
bCwgUHJlY29ubmVjdFJlYXNvbiByZWFzb24pCiB7CiAgICAgaWYgKCFtX3dlYnNpdGVEYXRhU3Rv
cmUtPmNvbmZpZ3VyYXRpb24oKS5hbGxvd3NTZXJ2ZXJQcmVjb25uZWN0KCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGF1dG8gc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPSBtX2NhblVzZUNyZWRl
bnRpYWxTdG9yYWdlID8gV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZSA6IFdl
YkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZTsKIAotICAgIHdlYnNpdGVE
YXRhU3RvcmUoKS5uZXR3b3JrUHJvY2VzcygpLnByZWNvbm5lY3RUbyhzZXNzaW9uSUQoKSwgaWRl
bnRpZmllcigpLCB3ZWJQYWdlSUQoKSwgdXJsLCB1c2VyQWdlbnQoKSwgc3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3ksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgbV9sYXN0TmF2aWdhdGlv
bldhc0FwcEluaXRpYXRlZCA/IExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpZZXMgOiBM
YXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDo6Tm8pOworICAgIHdlYnNpdGVEYXRhU3RvcmUo
KS5uZXR3b3JrUHJvY2VzcygpLnByZWNvbm5lY3RUbyh1cmwsIHJlYXNvbiwgc2Vzc2lvbklEKCks
IGlkZW50aWZpZXIoKSwgd2ViUGFnZUlEKCksIHVzZXJBZ2VudCgpLCBzdG9yZWRDcmVkZW50aWFs
c1BvbGljeSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBtX2xhc3ROYXZpZ2F0aW9u
V2FzQXBwSW5pdGlhdGVkID8gTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6OlllcyA6IExh
c3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpObyk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRDYW5Vc2VDcmVkZW50aWFsU3RvcmFnZShib29sIGNhblVzZUNyZWRlbnRpYWxTdG9yYWdl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBhZjI1NmVmYjYyNWZm
ODAwNjkzYzU4MzdhODQxMWM5NTIzY2RkYmUxLi45MzE5MWMxOTcxY2ZiNmUzZmQ0NDY0MjY2YzA2
NzY2M2E0YjUyMWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAt
NDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIlBhc3RlYm9hcmRBY2Nlc3NJbnRlbnQuaCIKICNpbmNs
dWRlICJQbHVnaW5Qcm9jZXNzQXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIlBvbGljeURlY2lzaW9u
LmgiCisjaW5jbHVkZSAiUHJlY29ubmVjdFJlYXNvbi5oIgogI2luY2x1ZGUgIlByb2Nlc3NUZXJt
aW5hdGlvblJlYXNvbi5oIgogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXIuaCIKICNpbmNsdWRl
ICJTYW5kYm94RXh0ZW5zaW9uLmgiCkBAIC0xODc5LDcgKzE4ODAsNyBAQCBwdWJsaWM6CiAKICAg
ICBXZWJQb3B1cE1lbnVQcm94eSogYWN0aXZlUG9wdXBNZW51KCkgY29uc3QgeyByZXR1cm4gbV9h
Y3RpdmVQb3B1cE1lbnUuZ2V0KCk7IH0KIAotICAgIHZvaWQgcHJlY29ubmVjdFRvKGNvbnN0IFVS
TCYpOworICAgIHZvaWQgcHJlY29ubmVjdFRvKGNvbnN0IFVSTCYsIFByZWNvbm5lY3RSZWFzb24p
OwogCiAgICAgYm9vbCBjYW5Vc2VDcmVkZW50aWFsU3RvcmFnZSgpIHsgcmV0dXJuIG1fY2FuVXNl
Q3JlZGVudGlhbFN0b3JhZ2U7IH0KICAgICB2b2lkIHNldENhblVzZUNyZWRlbnRpYWxTdG9yYWdl
KGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggZmUzZDMyYjMyOTVjMmM0NGZkNDQ0NGNkZDdmMTQxZjI0MDA0Y2EwMi4uMzMzZjll
ODMyYTlhYzkzZDljYThlNjRlNzc1OTNhMmNiYmVkMTY3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01OTkxLDYgKzU5OTEsNyBAQAog
CQlFNUJFRjY4MTIxMzBDNDdGMDBGMzExMTEgLyogV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bk
b3duSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViRGF0
YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLm1tOyBwYXRoID0gaW9zL1dlYkRhdGFMaXN0U3Vn
Z2VzdGlvbnNEcm9wZG93bklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTVD
QjA3REEyMEUxNjc4RjAwMjJDMTgzIC8qIFdLRm9ybUNvbG9yQ29udHJvbC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBXS0Zvcm1Db2xvckNvbnRyb2wuaDsgcGF0aCA9IGlvcy9mb3Jtcy9XS0Zvcm1Db2xvckNv
bnRyb2wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTVDQjA3REIyMEUxNjc4RjAw
MjJDMTgzIC8qIFdLRm9ybUNvbG9yQ29udHJvbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdL
Rm9ybUNvbG9yQ29udHJvbC5tbTsgcGF0aCA9IGlvcy9mb3Jtcy9XS0Zvcm1Db2xvckNvbnRyb2wu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUVCOTUxNDcyMjZEREQ3QzYwMDExMzNB
QSAvKiBQcmVjb25uZWN0UmVhc29uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFByZWNvbm5lY3RSZWFzb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUNBNjgw
RDMxRTY5MDRCNTAwNzMxRDIwIC8qIEV4dHJhUHJpdmF0ZVN5bWJvbHNGb3JUQVBJLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dHJhUHJpdmF0ZVN5bWJvbHNGb3JUQVBJLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVDQkZDMURCMUU2QTRENjYwMDAzMDBDNyAv
KiBFeHRyYVB1YmxpY1N5bWJvbHNGb3JUQVBJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dHJhUHVibGlj
U3ltYm9sc0ZvclRBUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjAzNjk3ODcx
NUY0QkYwNTAwQzNBODBFIC8qIFdlYkNvbG9yUGlja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvbG9yUGlja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTg3MzQsNiArODczNSw3IEBACiAJCQkJNTE4MzI0N0EyNjE2ODY3NTAwM0Yy
MzlFIC8qIE5ldHdvcmtVUkxTY2hlbWVUYXNrLmggKi8sCiAJCQkJNDYyMTA3RDcxRjM4REJEMzAw
REQ3ODEwIC8qIFBpbmdMb2FkLmNwcCAqLywKIAkJCQk1Q0U4NUIxRjFDODhFNjQzMDA3MEJGQ0Ug
LyogUGluZ0xvYWQuaCAqLywKKwkJCQlFQjk1MTQ3MjI2REREN0M2MDAxMTMzQUEgLyogUHJlY29u
bmVjdFJlYXNvbi5oICovLAogCQkJCTgzQTBFRDMzMUY3NDdDQzcwMDMyOTlFQiAvKiBQcmVjb25u
ZWN0VGFzay5jcHAgKi8sCiAJCQkJODNBMEVEMzIxRjc0N0NDNjAwMzI5OUVCIC8qIFByZWNvbm5l
Y3RUYXNrLmggKi8sCiAJCQkJNkJEMDU4NjQyMjBDRThDMjAwMEJFRDVDIC8qIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50TWFuYWdlci5jcHAgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436846</attachid>
            <date>2021-08-30 23:08:52 -0700</date>
            <delta_ts>2021-08-31 16:18:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229686-20210830230851.patch</filename>
            <type>text/plain</type>
            <size>26043</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDYxZjdhZDFjYTg4N2Q1YmZk
MjEyZjQzOTNkMGM1MmFlYWFjMGI1N2IuLjU0OGE5NzEwNWI4NjhmZjJkYjNlZDJkOGIzZjNmZWFl
YTI2YzhjMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMjEtMDgtMzAgIEJlbiBOaGFt
ICA8bmhhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUHJlY29ubmVjdGVkIHNvY2tldCBpcyBzb21l
dGltZXMgbm90IHVzZWQgZm9yIGluaXRpYWwgcmVxdWVzdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5Njg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtMb2FkOjpkaWRDb21wbGV0ZVdpdGhFcnJvcik6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWRTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9h
ZFNjaGVkdWxlcjo6c2NoZWR1bGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZFNjaGVk
dWxlcjo6dW5zY2hlZHVsZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkU2NoZWR1bGVy
OjpzY2hlZHVsZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZFNjaGVkdWxlcjo6
dW5zY2hlZHVsZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZFNjaGVkdWxlcjo6
c2NoZWR1bGVNYWluUmVzb3VyY2VMb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRT
Y2hlZHVsZXI6OnVuc2NoZWR1bGVNYWluUmVzb3VyY2VMb2FkKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0xvYWRTY2hlZHVsZXI6OnN0YXJ0ZWRQcmVjb25uZWN0Rm9yTWFpblJlc291cmNlKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRTY2hlZHVsZXI6OmZpbmlzaGVkUHJlY29ubmVj
dEZvck1haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkU2NoZWR1bGVy
Ojppc09yaWdpbkhUVFAxWCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkU2NoZWR1bGVy
Ojp1cGRhdGVPcmlnaW5Qcm90b2NvbEluZm8pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkU2NoZWR1bGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cHJlY29ubmVjdFRv
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RSZWFzb24uaDogQ29waWVkIGZyb20gU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFNjaGVkdWxlci5oLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3ByZWNv
bm5lY3RUb1NlcnZlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cHJl
Y29ubmVjdFRvKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cHJlY29ubmVjdFRvKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisKIDIwMjEtMDgtMjYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgogCiAgICAgICAgIEN1dCBkb3duIG9uIHVzZSBvZiBDRkdldFR5cGVJRCwgdXNpbmcgZHluYW1p
Y19jZl9jYXN0IGluc3RlYWQ7IHJlbGF0ZWQgc3RyZWFtbGluaW5nCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCmluZGV4IDNlNzMxMTE3MWE5NDBiNDQ5M2Vk
NDZhMWZlZDA2YjY2ZmMwYjYxZDAuLjJhYTAzNzcyZmE1OWI4YjNlODI0NjY3ODBhMzViZmU2NGIx
MjBkZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3Bw
CkBAIC0yNDUsNyArMjQ1LDcgQEAgdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB2b2lkIE5ldHdvcmtMb2FkOjpkaWRDb21wbGV0ZVdp
dGhFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgV2ViQ29yZTo6TmV0d29y
a0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCiB7CiAgICAgaWYgKG1fc2NoZWR1bGVy
KSB7Ci0gICAgICAgIG1fc2NoZWR1bGVyLT51bnNjaGVkdWxlKCp0aGlzKTsKKyAgICAgICAgbV9z
Y2hlZHVsZXItPnVuc2NoZWR1bGUoKnRoaXMsICZuZXR3b3JrTG9hZE1ldHJpY3MpOwogICAgICAg
ICBtX3NjaGVkdWxlciA9IG51bGxwdHI7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRTY2hlZHVsZXIuY3BwCmluZGV4IDFlNDgwZjU0
YTJhZTY5NzMxZTc1MzYzN2JmMDhkMzAxNDIzYzcyZWYuLjY1MDhiYzUxZmI3NWJmMjkyODlkOWQ4
ODI2YzNjNDNiMDhlNTE5YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWRTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWRTY2hlZHVsZXIuY3BwCkBAIC0yNiwxMiArMjYsMTMgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3b3JrTG9hZFNjaGVkdWxlci5oIgogCisjaW5j
bHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtMb2FkLmgiCi0jaW5jbHVkZSA8d3Rm
L0xpc3RIYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdGF0aWMgY29uc3RleHBy
IHNpemVfdCBtYXhpbXVtQWN0aXZlQ291bnRGb3JMb3dQcmlvcml0eSA9IDI7CitzdGF0aWMgY29u
c3RleHByIHNpemVfdCBtYXhpbXVtVHJhY2tlZEhUVFAxWE9yaWdpbnMgPSAxMjg7CiAKIGNsYXNz
IE5ldHdvcmtMb2FkU2NoZWR1bGVyOjpIb3N0Q29udGV4dCB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CkBAIC0xMTYsNiArMTE3LDI0IEBAIE5ldHdvcmtMb2FkU2NoZWR1bGVyOjpOZXR3
b3JrTG9hZFNjaGVkdWxlcigpID0gZGVmYXVsdDsKIE5ldHdvcmtMb2FkU2NoZWR1bGVyOjp+TmV0
d29ya0xvYWRTY2hlZHVsZXIoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgTmV0d29ya0xvYWRTY2hlZHVs
ZXI6OnNjaGVkdWxlKE5ldHdvcmtMb2FkJiBsb2FkKQoreworICAgIGJvb2wgaXNNYWluRnJhbWVN
YWluUmVzb3VyY2UgPSBsb2FkLmN1cnJlbnRSZXF1ZXN0KCkuaXNUb3BTaXRlKCk7CisgICAgaWYg
KGlzTWFpbkZyYW1lTWFpblJlc291cmNlKQorICAgICAgICBzY2hlZHVsZU1haW5SZXNvdXJjZUxv
YWQobG9hZCk7CisgICAgZWxzZQorICAgICAgICBzY2hlZHVsZUxvYWQobG9hZCk7Cit9CisKK3Zv
aWQgTmV0d29ya0xvYWRTY2hlZHVsZXI6OnVuc2NoZWR1bGUoTmV0d29ya0xvYWQmIGxvYWQsIGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyogbWV0cmljcykKK3sKKyAgICBib29sIGlz
TWFpbkZyYW1lTWFpblJlc291cmNlID0gbG9hZC5jdXJyZW50UmVxdWVzdCgpLmlzVG9wU2l0ZSgp
OworICAgIGlmIChpc01haW5GcmFtZU1haW5SZXNvdXJjZSkKKyAgICAgICAgdW5zY2hlZHVsZU1h
aW5SZXNvdXJjZUxvYWQobG9hZCwgbWV0cmljcyk7CisgICAgZWxzZQorICAgICAgICB1bnNjaGVk
dWxlTG9hZChsb2FkKTsKK30KKwordm9pZCBOZXR3b3JrTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVM
b2FkKE5ldHdvcmtMb2FkJiBsb2FkKQogewogICAgIGF1dG8qIGNvbnRleHQgPSBjb250ZXh0Rm9y
TG9hZChsb2FkKTsKIApAQCAtMTI3LDEyICsxNDYsOTUgQEAgdm9pZCBOZXR3b3JrTG9hZFNjaGVk
dWxlcjo6c2NoZWR1bGUoTmV0d29ya0xvYWQmIGxvYWQpCiAgICAgY29udGV4dC0+c2NoZWR1bGUo
bG9hZCk7CiB9CiAKLXZvaWQgTmV0d29ya0xvYWRTY2hlZHVsZXI6OnVuc2NoZWR1bGUoTmV0d29y
a0xvYWQmIGxvYWQpCit2b2lkIE5ldHdvcmtMb2FkU2NoZWR1bGVyOjp1bnNjaGVkdWxlTG9hZChO
ZXR3b3JrTG9hZCYgbG9hZCkKIHsKICAgICBpZiAoYXV0byogY29udGV4dCA9IGNvbnRleHRGb3JM
b2FkKGxvYWQpKQogICAgICAgICBjb250ZXh0LT51bnNjaGVkdWxlKGxvYWQpOwogfQogCit2b2lk
IE5ldHdvcmtMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZU1haW5SZXNvdXJjZUxvYWQoTmV0d29ya0xv
YWQmIGxvYWQpCit7CisgICAgU3RyaW5nIHByb3RvY29sSG9zdEFuZFBvcnQgPSBsb2FkLnVybCgp
LnByb3RvY29sSG9zdEFuZFBvcnQoKTsKKyAgICBpZiAoIWlzT3JpZ2luSFRUUDFYKHByb3RvY29s
SG9zdEFuZFBvcnQpKSB7CisgICAgICAgIGxvYWQuc3RhcnQoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGF1dG8gaXRlciA9IG1fcGVuZGluZ01haW5SZXNvdXJjZVByZWNvbm5lY3Rz
LmZpbmQocHJvdG9jb2xIb3N0QW5kUG9ydCk7CisgICAgaWYgKGl0ZXIgPT0gbV9wZW5kaW5nTWFp
blJlc291cmNlUHJlY29ubmVjdHMuZW5kKCkpIHsKKyAgICAgICAgbG9hZC5zdGFydCgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgUGVuZGluZ01haW5SZXNvdXJjZVByZWNvbm5lY3RJ
bmZvJiBpbmZvID0gaXRlci0+dmFsdWU7CisgICAgaW5mby5wZW5kaW5nTG9hZHMuYWRkKCZsb2Fk
KTsKKyAgICBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBOZXR3b3JrTG9hZFNjaGVkdWxlcjo6
c2NoZWR1bGVNYWluUmVzb3VyY2VMb2FkIGZvdW5kIHBlbmRpbmcgcHJlY29ubmVjdDsgZGVmZXJy
aW5nIGxvYWQgJXAiLCB0aGlzLCAmbG9hZCk7Cit9CisKK3ZvaWQgTmV0d29ya0xvYWRTY2hlZHVs
ZXI6OnVuc2NoZWR1bGVNYWluUmVzb3VyY2VMb2FkKE5ldHdvcmtMb2FkJiBsb2FkLCBjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MqIG1ldHJpY3MpCit7CisgICAgU3RyaW5nIHByb3Rv
Y29sSG9zdEFuZFBvcnQgPSBsb2FkLnVybCgpLnByb3RvY29sSG9zdEFuZFBvcnQoKTsKKworICAg
IGlmIChtZXRyaWNzKQorICAgICAgICB1cGRhdGVPcmlnaW5Qcm90b2NvbEluZm8ocHJvdG9jb2xI
b3N0QW5kUG9ydCwgbWV0cmljcy0+cHJvdG9jb2wpOworCisgICAgYXV0byBpdGVyID0gbV9wZW5k
aW5nTWFpblJlc291cmNlUHJlY29ubmVjdHMuZmluZChwcm90b2NvbEhvc3RBbmRQb3J0KTsKKyAg
ICBpZiAoaXRlciA9PSBtX3BlbmRpbmdNYWluUmVzb3VyY2VQcmVjb25uZWN0cy5lbmQoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgUGVuZGluZ01haW5SZXNvdXJjZVByZWNvbm5lY3RJbmZvJiBp
bmZvID0gaXRlci0+dmFsdWU7CisgICAgaW5mby5wZW5kaW5nTG9hZHMucmVtb3ZlKCZsb2FkKTsK
K30KKwordm9pZCBOZXR3b3JrTG9hZFNjaGVkdWxlcjo6c3RhcnRlZFByZWNvbm5lY3RGb3JNYWlu
UmVzb3VyY2UoY29uc3QgVVJMJiB1cmwpCit7CisgICAgYXV0byBpdGVyID0gbV9wZW5kaW5nTWFp
blJlc291cmNlUHJlY29ubmVjdHMuZmluZCh1cmwucHJvdG9jb2xIb3N0QW5kUG9ydCgpKTsKKyAg
ICBpZiAoaXRlciAhPSBtX3BlbmRpbmdNYWluUmVzb3VyY2VQcmVjb25uZWN0cy5lbmQoKSkgewor
ICAgICAgICBQZW5kaW5nTWFpblJlc291cmNlUHJlY29ubmVjdEluZm8mIGluZm8gPSBpdGVyLT52
YWx1ZTsKKyAgICAgICAgaW5mby5wZW5kaW5nUHJlY29ubmVjdHMrKzsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIFBlbmRpbmdNYWluUmVzb3VyY2VQcmVjb25uZWN0SW5mbyBpbmZvOwor
ICAgIG1fcGVuZGluZ01haW5SZXNvdXJjZVByZWNvbm5lY3RzLmFkZCh1cmwucHJvdG9jb2xIb3N0
QW5kUG9ydCgpLCBXVEZNb3ZlKGluZm8pKTsKK30KKwordm9pZCBOZXR3b3JrTG9hZFNjaGVkdWxl
cjo6ZmluaXNoZWRQcmVjb25uZWN0Rm9yTWFpblJlc291cmNlKGNvbnN0IFVSTCYgdXJsKQorewor
ICAgIGF1dG8gaXRlciA9IG1fcGVuZGluZ01haW5SZXNvdXJjZVByZWNvbm5lY3RzLmZpbmQodXJs
LnByb3RvY29sSG9zdEFuZFBvcnQoKSk7CisgICAgaWYgKGl0ZXIgPT0gbV9wZW5kaW5nTWFpblJl
c291cmNlUHJlY29ubmVjdHMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFBlbmRpbmdN
YWluUmVzb3VyY2VQcmVjb25uZWN0SW5mbyYgaW5mbyA9IGl0ZXItPnZhbHVlOworICAgIGlmICgh
aW5mby5wZW5kaW5nTG9hZHMuaXNFbXB0eSgpKSB7CisgICAgICAgIE5ldHdvcmtMb2FkKiBsb2Fk
ID0gaW5mby5wZW5kaW5nTG9hZHMudGFrZUZpcnN0KCk7CisgICAgICAgIFJFTEVBU0VfTE9HKE5l
dHdvcmssICJOZXR3b3JrTG9hZFNjaGVkdWxlcjo6ZmluaXNoZWRQcmVjb25uZWN0Rm9yTWFpblJl
c291cmNlIHN0YXJ0aW5nIGRlbGF5ZWQgbWFpbiByZXNvdXJjZSBsb2FkICVwIiwgbG9hZCk7Cisg
ICAgICAgIGxvYWQtPnN0YXJ0KCk7CisgICAgfQorCisgICAgYXV0byBwZW5kaW5nUHJlY29ubmVj
dHMgPSAtLWluZm8ucGVuZGluZ1ByZWNvbm5lY3RzOworICAgIGlmICghcGVuZGluZ1ByZWNvbm5l
Y3RzKQorICAgICAgICBtX3BlbmRpbmdNYWluUmVzb3VyY2VQcmVjb25uZWN0cy5yZW1vdmUoaXRl
cik7Cit9CisKK2Jvb2wgTmV0d29ya0xvYWRTY2hlZHVsZXI6OmlzT3JpZ2luSFRUUDFYKGNvbnN0
IFN0cmluZyYgcHJvdG9jb2xIb3N0QW5kUG9ydCkKK3sKKyAgICByZXR1cm4gbV9odHRwMVhPcmln
aW5zLmNvbnRhaW5zKHByb3RvY29sSG9zdEFuZFBvcnQpOworfQorCit2b2lkIE5ldHdvcmtMb2Fk
U2NoZWR1bGVyOjp1cGRhdGVPcmlnaW5Qcm90b2NvbEluZm8oY29uc3QgU3RyaW5nJiBwcm90b2Nv
bEhvc3RBbmRQb3J0LCBjb25zdCBTdHJpbmcmIGFscG5Qcm90b2NvbElEKQoreworICAgIGlmIChh
bHBuUHJvdG9jb2xJRCAhPSAiaHR0cC8xLjEiX3MpIHsKKyAgICAgICAgbV9odHRwMVhPcmlnaW5z
LnJlbW92ZShwcm90b2NvbEhvc3RBbmRQb3J0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGlmIChtX2h0dHAxWE9yaWdpbnMuc2l6ZSgpID49IG1heGltdW1UcmFja2VkSFRUUDFYT3Jp
Z2lucykKKyAgICAgICAgbV9odHRwMVhPcmlnaW5zLnJlbW92ZShtX2h0dHAxWE9yaWdpbnMucmFu
ZG9tKCkpOworCisgICAgbV9odHRwMVhPcmlnaW5zLmFkZChwcm90b2NvbEhvc3RBbmRQb3J0KTsK
K30KKwogdm9pZCBOZXR3b3JrTG9hZFNjaGVkdWxlcjo6c2V0UmVzb3VyY2VMb2FkU2NoZWR1bGlu
Z01vZGUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6Okxv
YWRTY2hlZHVsaW5nTW9kZSBtb2RlKQogewogICAgIHN3aXRjaCAobW9kZSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFNjaGVkdWxlci5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFNjaGVkdWxlci5oCmluZGV4
IDI5OWM4MWFjMzI4OWY4OWY3NTRhNmM2ZDE5MzMxOTc4YzJiMjY3OTIuLjk2ODE1ZjQyM2E1ZjZk
YjBiMzhiNTQ5Y2YzNTg5YTFlZTJmYTdiZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkU2NoZWR1bGVyLmgKQEAgLTI2LDggKzI2LDExIEBACiAj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPFdlYkNvcmUvTG9hZFNjaGVkdWxpbmdNb2RlLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrTG9hZE1ldHJpY3MuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0
Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDEsMTggKzQ0LDM4IEBAIHB1
YmxpYzoKICAgICB+TmV0d29ya0xvYWRTY2hlZHVsZXIoKTsKIAogICAgIHZvaWQgc2NoZWR1bGUo
TmV0d29ya0xvYWQmKTsKLSAgICB2b2lkIHVuc2NoZWR1bGUoTmV0d29ya0xvYWQmKTsKKyAgICB2
b2lkIHVuc2NoZWR1bGUoTmV0d29ya0xvYWQmLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1l
dHJpY3MqID0gbnVsbHB0cik7CisKKyAgICB2b2lkIHN0YXJ0ZWRQcmVjb25uZWN0Rm9yTWFpblJl
c291cmNlKGNvbnN0IFVSTCYpOworICAgIHZvaWQgZmluaXNoZWRQcmVjb25uZWN0Rm9yTWFpblJl
c291cmNlKGNvbnN0IFVSTCYpOwogCiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTY2hlZHVsaW5n
TW9kZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6TG9hZFNjaGVkdWxpbmdNb2Rl
KTsKICAgICB2b2lkIHByaW9yaXRpemVMb2Fkcyhjb25zdCBWZWN0b3I8TmV0d29ya0xvYWQqPiYp
OwogICAgIHZvaWQgY2xlYXJQYWdlRGF0YShXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAKIHBy
aXZhdGU6CisgICAgdm9pZCBzY2hlZHVsZUxvYWQoTmV0d29ya0xvYWQmKTsKKyAgICB2b2lkIHVu
c2NoZWR1bGVMb2FkKE5ldHdvcmtMb2FkJik7CisKKyAgICB2b2lkIHNjaGVkdWxlTWFpblJlc291
cmNlTG9hZChOZXR3b3JrTG9hZCYpOworICAgIHZvaWQgdW5zY2hlZHVsZU1haW5SZXNvdXJjZUxv
YWQoTmV0d29ya0xvYWQmLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MqKTsKKwor
ICAgIGJvb2wgaXNPcmlnaW5IVFRQMVgoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCB1cGRhdGVP
cmlnaW5Qcm90b2NvbEluZm8oY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CisKICAgICBj
bGFzcyBIb3N0Q29udGV4dDsKICAgICBIb3N0Q29udGV4dCogY29udGV4dEZvckxvYWQoY29uc3Qg
TmV0d29ya0xvYWQmKTsKIAogICAgIHVzaW5nIFBhZ2VDb250ZXh0ID0gSGFzaE1hcDxTdHJpbmcs
IHN0ZDo6dW5pcXVlX3B0cjxIb3N0Q29udGV4dD4+OwogICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxQYWdlQ29udGV4dD4+IG1fcGFnZUNvbnRleHRz
OworCisgICAgc3RydWN0IFBlbmRpbmdNYWluUmVzb3VyY2VQcmVjb25uZWN0SW5mbyB7CisgICAg
ICAgIHNpemVfdCBwZW5kaW5nUHJlY29ubmVjdHMgezF9OworICAgICAgICBMaXN0SGFzaFNldDxO
ZXR3b3JrTG9hZCAqPiBwZW5kaW5nTG9hZHM7CisgICAgfTsKKyAgICBIYXNoTWFwPFN0cmluZywg
UGVuZGluZ01haW5SZXNvdXJjZVByZWNvbm5lY3RJbmZvPiBtX3BlbmRpbmdNYWluUmVzb3VyY2VQ
cmVjb25uZWN0czsKKworICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2h0dHAxWE9yaWdpbnM7CiB9Owog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CmluZGV4IDc0NmJkYzZlZmE5ODkyZDY1OGE4YThiMWY3ZWMwYjZkM2UzYTZjNmUuLjdjOGY4NGIz
NWIyYzA3NGI4ZGQzY2UwZjdmYzRhY2EyMzU1ZGZkYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xMzY0LDcgKzEzNjQsNyBAQCBi
b29sIE5ldHdvcmtQcm9jZXNzOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnTW9kZUVuYWJs
ZWQoKSBjb25zdAogICAgIHJldHVybiBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdNb2Rl
RW5hYmxlZDsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlY29ubmVjdFRvKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBjb25zdCBVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiB1c2VyQWdlbnQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBMYXN0TmF2aWdhdGlvbldhc0FwcElu
aXRpYXRlZCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCkKK3ZvaWQgTmV0d29ya1Byb2Nl
c3M6OnByZWNvbm5lY3RUbyhjb25zdCBVUkwmIHVybCwgUHJlY29ubmVjdFJlYXNvbiByZWFzb24s
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdl
UHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBjb25zdCBTdHJpbmcm
IHVzZXJBZ2VudCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVk
IGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKQogewogICAgIExPRyhOZXR3b3JrLCAiKE5l
dHdvcmtQcm9jZXNzKSBQcmVjb25uZWN0aW5nIHRvIFVSTCAlcyAoc3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3kgJWkpIiwgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIChpbnQpc3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3kpOwogCkBAIC0xMzkzLDcgKzEzOTMsMTUgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6cHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRl
bnRpZmkKICAgICBwYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gc3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3k7CiAgICAgcGFyYW1ldGVycy5zaG91bGRQcmVjb25uZWN0T25seSA9IFBy
ZWNvbm5lY3RPbmx5OjpZZXM7CiAKLSAgICAobmV3IFByZWNvbm5lY3RUYXNrKCpuZXR3b3JrU2Vz
c2lvbiwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW10oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpIHsgfSkpLT5zdGFydCgpOworICAgIGlmIChyZWFzb24gPT0gUHJlY29ubmVjdFJlYXNvbjo6
TWFpblJlc291cmNlTG9hZCkgeworICAgICAgICBwYXJhbWV0ZXJzLnJlcXVlc3Quc2V0UHJpb3Jp
dHkoV2ViQ29yZTo6UmVzb3VyY2VMb2FkUHJpb3JpdHk6OlZlcnlIaWdoKTsKKyAgICAgICAgbmV0
d29ya1Nlc3Npb24tPm5ldHdvcmtMb2FkU2NoZWR1bGVyKCkuc3RhcnRlZFByZWNvbm5lY3RGb3JN
YWluUmVzb3VyY2UodXJsKTsKKyAgICB9CisKKyAgICAobmV3IFByZWNvbm5lY3RUYXNrKCpuZXR3
b3JrU2Vzc2lvbiwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3JlYXNvbiwgbmV0d29ya1Nlc3Npb24s
IHVybF0oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIHsKKyAgICAgICAgaWYgKHJlYXNv
biA9PSBQcmVjb25uZWN0UmVhc29uOjpNYWluUmVzb3VyY2VMb2FkKQorICAgICAgICAgICAgbmV0
d29ya1Nlc3Npb24tPm5ldHdvcmtMb2FkU2NoZWR1bGVyKCkuZmluaXNoZWRQcmVjb25uZWN0Rm9y
TWFpblJlc291cmNlKHVybCk7CisgICAgfSkpLT5zdGFydCgpOwogI2Vsc2UKICAgICBVTlVTRURf
UEFSQU0odXJsKTsKICAgICBVTlVTRURfUEFSQU0odXNlckFnZW50KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCBlMTZmNmRkNDg5NmNkNGNk
OTdiNzAzYjNkYTU3YTU1MjI4MDk4NDIyLi5kMzYyMjg2MTEzYWNlMGNmMmIyMGIwNjQ5MmUyNWZk
ZjgwMzYyOWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyLmgiCiAjaW5jbHVkZSAiTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuaCIKICNp
bmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlByZWNv
bm5lY3RSZWFzb24uaCIKICNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94
eS5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJXZWJJREJTZXJ2
ZXIuaCIKQEAgLTI5MSw3ICsyOTIsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQ2FjaGVTdG9yYWdl
Um9vdFBhdGhDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPjsKICAg
ICB2b2lkIGNhY2hlU3RvcmFnZVJvb3RQYXRoKFBBTDo6U2Vzc2lvbklELCBDYWNoZVN0b3JhZ2VS
b290UGF0aENhbGxiYWNrJiYpOwogCi0gICAgdm9pZCBwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9u
SUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwg
c3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIExhc3ROYXZpZ2F0aW9u
V2FzQXBwSW5pdGlhdGVkKTsKKyAgICB2b2lkIHByZWNvbm5lY3RUbyhjb25zdCBVUkwmLCBQcmVj
b25uZWN0UmVhc29uLCBQQUw6OlNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OlN0b3JlZENyZWRl
bnRpYWxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwg
TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpOwogCiAgICAgdm9pZCBzZXRTZXNzaW9uSXND
b250cm9sbGVkQnlBdXRvbWF0aW9uKFBBTDo6U2Vzc2lvbklELCBib29sKTsKICAgICBib29sIHNl
c3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oUEFMOjpTZXNzaW9uSUQpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVz
c2FnZXMuaW4KaW5kZXggY2FlYjhkOWJiODQ4YzY5MDBhZTk1NTVkMDc1OWY5MmQ1OWJmMjQ5Mi4u
MDg1MDcxYzgyZWFjYzkxNGJkYTE4Y2IwNWY2Zjc2YWVjYTI5ODNlMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmlu
CkBAIC03NCw3ICs3NCw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2Vp
dmVyIHsKICAgICBQcmVwYXJlVG9TdXNwZW5kKGJvb2wgaXNTdXNwZW5zaW9uSW1taW5lbnQpIC0+
ICgpIEFzeW5jCiAgICAgUHJvY2Vzc0RpZFJlc3VtZSgpCiAKLSAgICBQcmVjb25uZWN0VG8oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2Vi
UGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgVVJMIHVybCwg
U3RyaW5nIHVzZXJBZ2VudCwgZW51bTp1aW50OF90IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxz
UG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBlbnVtOmJvb2wgc3RkOjpvcHRpb25hbDxX
ZWJLaXQ6Ok5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluLCBlbnVtOmJvb2wgV2ViS2l0OjpMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCBs
YXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk7CisgICAgUHJlY29ubmVjdFRvKFVSTCB1cmws
IGVudW06dWludDhfdCBXZWJLaXQ6OlByZWNvbm5lY3RSZWFzb24gcmVhc29uLCBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJv
eHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBTdHJpbmcgdXNlckFnZW50
LCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3ksIGVudW06Ym9vbCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6TmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIGVudW06Ym9v
bCBXZWJLaXQ6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIGxhc3ROYXZpZ2F0aW9uV2Fz
QXBwSW5pdGlhdGVkKTsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAg
ICAgQ2xlYXJQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNlRG9tYWluKSAtPiAoKSBBc3luYwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0UmVhc29uLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RSZWFzb24uaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41MDVmZjQ1MWY1MTg5MTNjN2MwNTgwMzJhZjk4ZDM2NDNhMDMyNDAwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0UmVhc29uLmgKQEAg
LTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8c3Rk
aW50Lmg+CisjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2VudW0gY2xhc3MgUHJlY29ubmVjdFJlYXNvbiA6IHVpbnQ4X3QgeworICAgIE1haW5SZXNv
dXJjZUxvYWQsCisgICAgQVBJSGludAorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKK25h
bWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6UHJl
Y29ubmVjdFJlYXNvbj4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgV2Vi
S2l0OjpQcmVjb25uZWN0UmVhc29uLAorICAgIFdlYktpdDo6UHJlY29ubmVjdFJlYXNvbjo6TWFp
blJlc291cmNlTG9hZCwKKyAgICBXZWJLaXQ6OlByZWNvbm5lY3RSZWFzb246OkFQSUhpbnQKKyAg
ICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDNmMWQ0NjQ4Yjc5NTc1NTQzY2U3MzI0
MTNhZjExOTI0MGViNjBlMDguLmI3Y2RhOWUyNzRkZTJjY2RjM2QwZjQzZTg3NDA5MTkwNjBmZTcy
MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQpAQCAtMzIzOSw3ICszMjM5LDcgQEAgc3RhdGljIGlubGluZSBPcHRpb25TZXQ8V2ViS2l0OjpG
aW5kT3B0aW9ucz4gdG9GaW5kT3B0aW9ucyhfV0tGaW5kT3B0aW9ucyB3a0ZpbmQKIC0gKHZvaWQp
X3ByZWNvbm5lY3RUb1NlcnZlcjooTlNVUkwgKil1cmwKIHsKICAgICBUSFJPV19JRl9TVVNQRU5E
RUQ7Ci0gICAgX3BhZ2UtPnByZWNvbm5lY3RUbyh1cmwpOworICAgIF9wYWdlLT5wcmVjb25uZWN0
VG8odXJsLCBXZWJLaXQ6OlByZWNvbm5lY3RSZWFzb246OkFQSUhpbnQpOwogfQogCiAtIChCT09M
KV9jYW5Vc2VDcmVkZW50aWFsU3RvcmFnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggNmY3Y2FkMTdlMTFh
Y2RhYjRjNjkxZDQzNDZjNzRiYzQwNDM3ODVmNi4uNjAxM2JhMDFlZjBiOTlmMmIwOWJkZjRkYjll
YWRmN2I2YTVlNmI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0xNTE1LDExICsxNTE1LDExIEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0TG9jYWxTdG9yYWdlRGV0YWlscyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIENvbXBsCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6R2V0TG9jYWxTdG9yYWdlT3JpZ2luRGV0YWlscyhzZXNzaW9uSUQpLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6cHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRl
bnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlE
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFdlYkNvcmU6OlN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzdGQ6Om9wdGlvbmFs
PE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
LCBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRp
YXRlZCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cHJlY29ubmVjdFRvKGNvbnN0IFVSTCYg
dXJsLCBQcmVjb25uZWN0UmVhc29uIHJlYXNvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBXZWJDb3JlOjpTdG9yZWRD
cmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc3RkOjpvcHRpb25hbDxO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwg
TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0
ZWQpCiB7CiAgICAgaWYgKCF1cmwuaXNWYWxpZCgpIHx8ICF1cmwucHJvdG9jb2xJc0luSFRUUEZh
bWlseSgpKQogICAgICAgICByZXR1cm47Ci0gICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3M6OlByZWNvbm5lY3RUbyhzZXNzaW9uSUQsIHdlYlBhZ2VQcm94eUlELCB3ZWJQYWdlSUQsIHVy
bCwgdXNlckFnZW50LCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgaXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbiwgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpLCAwKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UHJlY29ubmVjdFRvKHVybCwgcmVhc29uLCBzZXNz
aW9uSUQsIHdlYlBhZ2VQcm94eUlELCB3ZWJQYWdlSUQsIHVzZXJBZ2VudCwgc3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3ksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIGxhc3ROYXZpZ2F0aW9u
V2FzQXBwSW5pdGlhdGVkKSwgMCk7CiB9CiAKIHN0YXRpYyBib29sIGFueVByb2Nlc3NQb29sSGFz
Rm9yZWdyb3VuZFdlYlByb2Nlc3NlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDMzMDkzM2ZlMmM4ZGQ0YzEy
NDNkM2ViN2U3ZTlmMmZkNmFhNWRkNjkuLmRmN2UyNjVhMGM3M2YyMTQ0NmE1ZTIzNjcwNTBlM2Qy
ZjI4MjUwMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQXV4aWxp
YXJ5UHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2Vz
UmVwbGllcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyLmgiCisj
aW5jbHVkZSAiUHJlY29ubmVjdFJlYXNvbi5oIgogI2luY2x1ZGUgIlByb2Nlc3NMYXVuY2hlci5o
IgogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXIuaCIKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0
bGVyQ2xpZW50LmgiCkBAIC0xMjksNyArMTMwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBnZXRM
b2NhbFN0b3JhZ2VEZXRhaWxzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFZlY3RvcjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6Ok9yaWdpbkRldGFpbHM+JiYpPiYm
KTsKIAotICAgIHZvaWQgcHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklELCBXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgVVJMJiwgY29uc3QgU3Ry
aW5nJiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8TmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk7
CisgICAgdm9pZCBwcmVjb25uZWN0VG8oY29uc3QgVVJMJiwgUHJlY29ubmVjdFJlYXNvbiwgUEFM
OjpTZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc3Rk
OjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIExhc3ROYXZpZ2F0aW9uV2Fz
QXBwSW5pdGlhdGVkKTsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAg
ICAgdm9pZCBjbGVhclByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA0MWU4MjY2ZjcxN2QyNGYzYmU0NGI1
YTJkN2Y3NDVjOTNjMWExYmE5Li42ZWU5MWFlNThlZjgwMGVhMzk4ZjAxYjVlOTRjZDFjN2Q3NDFk
ZjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTE0MDks
NyArMTQwOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9u
U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAKICAgICBhZGRQbGF0Zm9ybUxv
YWRQYXJhbWV0ZXJzKHByb2Nlc3MsIGxvYWRQYXJhbWV0ZXJzKTsKIAotICAgIHByZWNvbm5lY3RU
byh1cmwpOworICAgIHByZWNvbm5lY3RUbyh1cmwsIFByZWNvbm5lY3RSZWFzb246Ok1haW5SZXNv
dXJjZUxvYWQpOwogCiAgICAgbmF2aWdhdGlvbi5zZXRJc0xvYWRlZFdpdGhOYXZpZ2F0aW9uU2hh
cmVkKHRydWUpOwogCkBAIC00NTg1LDE0ICs0NTg1LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXROZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKGJvb2wgbmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVz
cykKICAgICBtX3BhZ2VMb2FkU3RhdGUuc2V0TmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyh0cmFu
c2FjdGlvbiwgbmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyk7CiB9CiAKLXZvaWQgV2ViUGFnZVBy
b3h5OjpwcmVjb25uZWN0VG8oY29uc3QgVVJMJiB1cmwpCit2b2lkIFdlYlBhZ2VQcm94eTo6cHJl
Y29ubmVjdFRvKGNvbnN0IFVSTCYgdXJsLCBQcmVjb25uZWN0UmVhc29uIHJlYXNvbikKIHsKICAg
ICBpZiAoIW1fd2Vic2l0ZURhdGFTdG9yZS0+Y29uZmlndXJhdGlvbigpLmFsbG93c1NlcnZlclBy
ZWNvbm5lY3QoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBzdG9yZWRDcmVkZW50aWFs
c1BvbGljeSA9IG1fY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UgPyBXZWJDb3JlOjpTdG9yZWRDcmVk
ZW50aWFsc1BvbGljeTo6VXNlIDogV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRv
Tm90VXNlOwogCi0gICAgd2Vic2l0ZURhdGFTdG9yZSgpLm5ldHdvcmtQcm9jZXNzKCkucHJlY29u
bmVjdFRvKHNlc3Npb25JRCgpLCBpZGVudGlmaWVyKCksIHdlYlBhZ2VJRCgpLCB1cmwsIHVzZXJB
Z2VudCgpLCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbigpLCBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkID8gTGFzdE5hdmlnYXRpb25X
YXNBcHBJbml0aWF0ZWQ6OlllcyA6IExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpObyk7
CisgICAgd2Vic2l0ZURhdGFTdG9yZSgpLm5ldHdvcmtQcm9jZXNzKCkucHJlY29ubmVjdFRvKHVy
bCwgcmVhc29uLCBzZXNzaW9uSUQoKSwgaWRlbnRpZmllcigpLCB3ZWJQYWdlSUQoKSwgdXNlckFn
ZW50KCksIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluKCksIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgPyBMYXN0TmF2aWdhdGlvbldh
c0FwcEluaXRpYXRlZDo6WWVzIDogTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6Ok5vKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldENhblVzZUNyZWRlbnRpYWxTdG9yYWdlKGJvb2wg
Y2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCmluZGV4IGYyNGMwMzA3MzFjYTdkM2EyMzk4MDk3NTM3ZjBjNzNkNDRjMWNjYjAuLmRiZDI4
NjgxOTk0MjA5MmYwOTM5ZjJlOTY5MzM1YTc0YzFmZmMxMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiUGFzdGVib2Fy
ZEFjY2Vzc0ludGVudC5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzLmgiCiAj
aW5jbHVkZSAiUG9saWN5RGVjaXNpb24uaCIKKyNpbmNsdWRlICJQcmVjb25uZWN0UmVhc29uLmgi
CiAjaW5jbHVkZSAiUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmgiCiAjaW5jbHVkZSAiUHJvY2Vz
c1Rocm90dGxlci5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKQEAgLTE4ODEsNyAr
MTg4Miw3IEBAIHB1YmxpYzoKIAogICAgIFdlYlBvcHVwTWVudVByb3h5KiBhY3RpdmVQb3B1cE1l
bnUoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZVBvcHVwTWVudS5nZXQoKTsgfQogCi0gICAgdm9p
ZCBwcmVjb25uZWN0VG8oY29uc3QgVVJMJik7CisgICAgdm9pZCBwcmVjb25uZWN0VG8oY29uc3Qg
VVJMJiwgUHJlY29ubmVjdFJlYXNvbik7CiAKICAgICBib29sIGNhblVzZUNyZWRlbnRpYWxTdG9y
YWdlKCkgeyByZXR1cm4gbV9jYW5Vc2VDcmVkZW50aWFsU3RvcmFnZTsgfQogICAgIHZvaWQgc2V0
Q2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5ZTQxNmVmMzc0NDRlNDJlYmU2OGMwZTEw
MDI0YmNlY2ZmYjI3Zjg4Li4wYTEwNTg3OWIzYmNhMWZiZDFmOTNiODFhNWRkYzA2ZjBjMjkyODEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTYwMDUsNiArNjAwNSw3IEBACiAJCUU1QkVGNjgxMjEzMEM0N0YwMEYzMTExMSAvKiBXZWJE
YXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IG5hbWUgPSBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MubW07IHBh
dGggPSBpb3MvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFNUNCMDdEQTIwRTE2NzhGMDAyMkMxODMgLyogV0tGb3JtQ29s
b3JDb250cm9sLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLRm9ybUNvbG9yQ29udHJvbC5oOyBwYXRoID0g
aW9zL2Zvcm1zL1dLRm9ybUNvbG9yQ29udHJvbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFNUNCMDdEQjIwRTE2NzhGMDAyMkMxODMgLyogV0tGb3JtQ29sb3JDb250cm9sLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBuYW1lID0gV0tGb3JtQ29sb3JDb250cm9sLm1tOyBwYXRoID0gaW9zL2Zv
cm1zL1dLRm9ybUNvbG9yQ29udHJvbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RUI5NTE0NzIyNkRERDdDNjAwMTEzM0FBIC8qIFByZWNvbm5lY3RSZWFzb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJlY29ubmVjdFJlYXNvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFQ0E2ODBEMzFFNjkwNEI1MDA3MzFEMjAgLyogRXh0cmFQcml2YXRl
U3ltYm9sc0ZvclRBUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXh0cmFQ
cml2YXRlU3ltYm9sc0ZvclRBUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUNC
RkMxREIxRTZBNEQ2NjAwMDMwMEM3IC8qIEV4dHJhUHVibGljU3ltYm9sc0ZvclRBUEkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRXh0cmFQdWJsaWNTeW1ib2xzRm9yVEFQSS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGMDM2OTc4NzE1RjRCRjA1MDBDM0E4MEUgLyogV2ViQ29sb3JQaWNrZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29sb3JQaWNrZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODc1MCw2ICs4NzUxLDcgQEAKIAkJ
CQk1MTgzMjQ3QTI2MTY4Njc1MDAzRjIzOUUgLyogTmV0d29ya1VSTFNjaGVtZVRhc2suaCAqLywK
IAkJCQk0NjIxMDdENzFGMzhEQkQzMDBERDc4MTAgLyogUGluZ0xvYWQuY3BwICovLAogCQkJCTVD
RTg1QjFGMUM4OEU2NDMwMDcwQkZDRSAvKiBQaW5nTG9hZC5oICovLAorCQkJCUVCOTUxNDcyMjZE
REQ3QzYwMDExMzNBQSAvKiBQcmVjb25uZWN0UmVhc29uLmggKi8sCiAJCQkJODNBMEVEMzMxRjc0
N0NDNzAwMzI5OUVCIC8qIFByZWNvbm5lY3RUYXNrLmNwcCAqLywKIAkJCQk4M0EwRUQzMjFGNzQ3
Q0M2MDAzMjk5RUIgLyogUHJlY29ubmVjdFRhc2suaCAqLywKIAkJCQk2QkQwNTg2NDIyMENFOEMy
MDAwQkVENUMgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcCAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436961</attachid>
            <date>2021-08-31 16:18:03 -0700</date>
            <delta_ts>2021-08-31 18:10:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229686-20210831161802.patch</filename>
            <type>text/plain</type>
            <size>28592</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDYxZjdhZDFjYTg4N2Q1YmZk
MjEyZjQzOTNkMGM1MmFlYWFjMGI1N2IuLmQxNDc2NGJmZjA5NDY1OGM4ZGM2OWU2ODI3ZGY4OTU1
NDA3YWFmYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMjEtMDgtMzAgIEJlbiBOaGFt
ICA8bmhhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUHJlY29ubmVjdGVkIHNvY2tldCBpcyBzb21l
dGltZXMgbm90IHVzZWQgZm9yIGluaXRpYWwgcmVxdWVzdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5Njg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRDb21wbGV0ZVdpdGhFcnJvcik6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRTY2hlZHVsZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGUpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrTG9hZFNjaGVkdWxlcjo6dW5zY2hlZHVsZSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZUxvYWQpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrTG9hZFNjaGVkdWxlcjo6dW5zY2hlZHVsZUxvYWQpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVNYWluUmVzb3VyY2VMb2FkKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0xvYWRTY2hlZHVsZXI6OnVuc2NoZWR1bGVNYWluUmVzb3VyY2VM
b2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRTY2hlZHVsZXI6OnN0YXJ0ZWRQcmVj
b25uZWN0Rm9yTWFpblJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRTY2hl
ZHVsZXI6OmZpbmlzaGVkUHJlY29ubmVjdEZvck1haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtMb2FkU2NoZWR1bGVyOjppc09yaWdpbkhUVFAxWCk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtMb2FkU2NoZWR1bGVyOjp1cGRhdGVPcmlnaW5Qcm90b2NvbEluZm8pOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkU2NoZWR1bGVyLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6cHJlY29ubmVjdFRvKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1l
c3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RSZWFzb24uaDog
Q29waWVkIGZyb20gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFNjaGVk
dWxlci5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgX3ByZWNvbm5lY3RUb1NlcnZlcjpdKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6cHJlY29ubmVjdFRvKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RX
aXRoTmF2aWdhdGlvblNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cHJl
Y29ubmVjdFRvKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAg
ICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjEtMDgtMjYgIERhcmlu
IEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEN1dCBkb3duIG9uIHVzZSBvZiBD
RkdldFR5cGVJRCwgdXNpbmcgZHluYW1pY19jZl9jYXN0IGluc3RlYWQ7IHJlbGF0ZWQgc3RyZWFt
bGluaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCmlu
ZGV4IDNlNzMxMTE3MWE5NDBiNDQ5M2VkNDZhMWZlZDA2YjY2ZmMwYjYxZDAuLjJhYTAzNzcyZmE1
OWI4YjNlODI0NjY3ODBhMzViZmU2NGIxMjBkZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCkBAIC0yNDUsNyArMjQ1LDcgQEAgdm9pZCBOZXR3b3Jr
TG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB2b2lkIE5l
dHdvcmtMb2FkOjpkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
ciwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3Mp
CiB7CiAgICAgaWYgKG1fc2NoZWR1bGVyKSB7Ci0gICAgICAgIG1fc2NoZWR1bGVyLT51bnNjaGVk
dWxlKCp0aGlzKTsKKyAgICAgICAgbV9zY2hlZHVsZXItPnVuc2NoZWR1bGUoKnRoaXMsICZuZXR3
b3JrTG9hZE1ldHJpY3MpOwogICAgICAgICBtX3NjaGVkdWxlciA9IG51bGxwdHI7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkU2No
ZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRTY2hl
ZHVsZXIuY3BwCmluZGV4IDFlNDgwZjU0YTJhZTY5NzMxZTc1MzYzN2JmMDhkMzAxNDIzYzcyZWYu
LjY1MDhiYzUxZmI3NWJmMjkyODlkOWQ4ODI2YzNjNDNiMDhlNTE5YTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRTY2hlZHVsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRTY2hlZHVsZXIuY3BwCkBA
IC0yNiwxMiArMjYsMTMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3b3Jr
TG9hZFNjaGVkdWxlci5oIgogCisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdv
cmtMb2FkLmgiCi0jaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBzdGF0aWMgY29uc3RleHByIHNpemVfdCBtYXhpbXVtQWN0aXZlQ291bnRGb3JMb3dQ
cmlvcml0eSA9IDI7CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBtYXhpbXVtVHJhY2tlZEhUVFAx
WE9yaWdpbnMgPSAxMjg7CiAKIGNsYXNzIE5ldHdvcmtMb2FkU2NoZWR1bGVyOjpIb3N0Q29udGV4
dCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0xMTYsNiArMTE3LDI0IEBAIE5l
dHdvcmtMb2FkU2NoZWR1bGVyOjpOZXR3b3JrTG9hZFNjaGVkdWxlcigpID0gZGVmYXVsdDsKIE5l
dHdvcmtMb2FkU2NoZWR1bGVyOjp+TmV0d29ya0xvYWRTY2hlZHVsZXIoKSA9IGRlZmF1bHQ7CiAK
IHZvaWQgTmV0d29ya0xvYWRTY2hlZHVsZXI6OnNjaGVkdWxlKE5ldHdvcmtMb2FkJiBsb2FkKQor
eworICAgIGJvb2wgaXNNYWluRnJhbWVNYWluUmVzb3VyY2UgPSBsb2FkLmN1cnJlbnRSZXF1ZXN0
KCkuaXNUb3BTaXRlKCk7CisgICAgaWYgKGlzTWFpbkZyYW1lTWFpblJlc291cmNlKQorICAgICAg
ICBzY2hlZHVsZU1haW5SZXNvdXJjZUxvYWQobG9hZCk7CisgICAgZWxzZQorICAgICAgICBzY2hl
ZHVsZUxvYWQobG9hZCk7Cit9CisKK3ZvaWQgTmV0d29ya0xvYWRTY2hlZHVsZXI6OnVuc2NoZWR1
bGUoTmV0d29ya0xvYWQmIGxvYWQsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyog
bWV0cmljcykKK3sKKyAgICBib29sIGlzTWFpbkZyYW1lTWFpblJlc291cmNlID0gbG9hZC5jdXJy
ZW50UmVxdWVzdCgpLmlzVG9wU2l0ZSgpOworICAgIGlmIChpc01haW5GcmFtZU1haW5SZXNvdXJj
ZSkKKyAgICAgICAgdW5zY2hlZHVsZU1haW5SZXNvdXJjZUxvYWQobG9hZCwgbWV0cmljcyk7Cisg
ICAgZWxzZQorICAgICAgICB1bnNjaGVkdWxlTG9hZChsb2FkKTsKK30KKwordm9pZCBOZXR3b3Jr
TG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVMb2FkKE5ldHdvcmtMb2FkJiBsb2FkKQogewogICAgIGF1
dG8qIGNvbnRleHQgPSBjb250ZXh0Rm9yTG9hZChsb2FkKTsKIApAQCAtMTI3LDEyICsxNDYsOTUg
QEAgdm9pZCBOZXR3b3JrTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGUoTmV0d29ya0xvYWQmIGxvYWQp
CiAgICAgY29udGV4dC0+c2NoZWR1bGUobG9hZCk7CiB9CiAKLXZvaWQgTmV0d29ya0xvYWRTY2hl
ZHVsZXI6OnVuc2NoZWR1bGUoTmV0d29ya0xvYWQmIGxvYWQpCit2b2lkIE5ldHdvcmtMb2FkU2No
ZWR1bGVyOjp1bnNjaGVkdWxlTG9hZChOZXR3b3JrTG9hZCYgbG9hZCkKIHsKICAgICBpZiAoYXV0
byogY29udGV4dCA9IGNvbnRleHRGb3JMb2FkKGxvYWQpKQogICAgICAgICBjb250ZXh0LT51bnNj
aGVkdWxlKGxvYWQpOwogfQogCit2b2lkIE5ldHdvcmtMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZU1h
aW5SZXNvdXJjZUxvYWQoTmV0d29ya0xvYWQmIGxvYWQpCit7CisgICAgU3RyaW5nIHByb3RvY29s
SG9zdEFuZFBvcnQgPSBsb2FkLnVybCgpLnByb3RvY29sSG9zdEFuZFBvcnQoKTsKKyAgICBpZiAo
IWlzT3JpZ2luSFRUUDFYKHByb3RvY29sSG9zdEFuZFBvcnQpKSB7CisgICAgICAgIGxvYWQuc3Rh
cnQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gaXRlciA9IG1fcGVuZGlu
Z01haW5SZXNvdXJjZVByZWNvbm5lY3RzLmZpbmQocHJvdG9jb2xIb3N0QW5kUG9ydCk7CisgICAg
aWYgKGl0ZXIgPT0gbV9wZW5kaW5nTWFpblJlc291cmNlUHJlY29ubmVjdHMuZW5kKCkpIHsKKyAg
ICAgICAgbG9hZC5zdGFydCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUGVuZGlu
Z01haW5SZXNvdXJjZVByZWNvbm5lY3RJbmZvJiBpbmZvID0gaXRlci0+dmFsdWU7CisgICAgaW5m
by5wZW5kaW5nTG9hZHMuYWRkKCZsb2FkKTsKKyAgICBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAg
LSBOZXR3b3JrTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVNYWluUmVzb3VyY2VMb2FkIGZvdW5kIHBl
bmRpbmcgcHJlY29ubmVjdDsgZGVmZXJyaW5nIGxvYWQgJXAiLCB0aGlzLCAmbG9hZCk7Cit9CisK
K3ZvaWQgTmV0d29ya0xvYWRTY2hlZHVsZXI6OnVuc2NoZWR1bGVNYWluUmVzb3VyY2VMb2FkKE5l
dHdvcmtMb2FkJiBsb2FkLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MqIG1ldHJp
Y3MpCit7CisgICAgU3RyaW5nIHByb3RvY29sSG9zdEFuZFBvcnQgPSBsb2FkLnVybCgpLnByb3Rv
Y29sSG9zdEFuZFBvcnQoKTsKKworICAgIGlmIChtZXRyaWNzKQorICAgICAgICB1cGRhdGVPcmln
aW5Qcm90b2NvbEluZm8ocHJvdG9jb2xIb3N0QW5kUG9ydCwgbWV0cmljcy0+cHJvdG9jb2wpOwor
CisgICAgYXV0byBpdGVyID0gbV9wZW5kaW5nTWFpblJlc291cmNlUHJlY29ubmVjdHMuZmluZChw
cm90b2NvbEhvc3RBbmRQb3J0KTsKKyAgICBpZiAoaXRlciA9PSBtX3BlbmRpbmdNYWluUmVzb3Vy
Y2VQcmVjb25uZWN0cy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUGVuZGluZ01haW5S
ZXNvdXJjZVByZWNvbm5lY3RJbmZvJiBpbmZvID0gaXRlci0+dmFsdWU7CisgICAgaW5mby5wZW5k
aW5nTG9hZHMucmVtb3ZlKCZsb2FkKTsKK30KKwordm9pZCBOZXR3b3JrTG9hZFNjaGVkdWxlcjo6
c3RhcnRlZFByZWNvbm5lY3RGb3JNYWluUmVzb3VyY2UoY29uc3QgVVJMJiB1cmwpCit7CisgICAg
YXV0byBpdGVyID0gbV9wZW5kaW5nTWFpblJlc291cmNlUHJlY29ubmVjdHMuZmluZCh1cmwucHJv
dG9jb2xIb3N0QW5kUG9ydCgpKTsKKyAgICBpZiAoaXRlciAhPSBtX3BlbmRpbmdNYWluUmVzb3Vy
Y2VQcmVjb25uZWN0cy5lbmQoKSkgeworICAgICAgICBQZW5kaW5nTWFpblJlc291cmNlUHJlY29u
bmVjdEluZm8mIGluZm8gPSBpdGVyLT52YWx1ZTsKKyAgICAgICAgaW5mby5wZW5kaW5nUHJlY29u
bmVjdHMrKzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFBlbmRpbmdNYWluUmVzb3Vy
Y2VQcmVjb25uZWN0SW5mbyBpbmZvOworICAgIG1fcGVuZGluZ01haW5SZXNvdXJjZVByZWNvbm5l
Y3RzLmFkZCh1cmwucHJvdG9jb2xIb3N0QW5kUG9ydCgpLCBXVEZNb3ZlKGluZm8pKTsKK30KKwor
dm9pZCBOZXR3b3JrTG9hZFNjaGVkdWxlcjo6ZmluaXNoZWRQcmVjb25uZWN0Rm9yTWFpblJlc291
cmNlKGNvbnN0IFVSTCYgdXJsKQoreworICAgIGF1dG8gaXRlciA9IG1fcGVuZGluZ01haW5SZXNv
dXJjZVByZWNvbm5lY3RzLmZpbmQodXJsLnByb3RvY29sSG9zdEFuZFBvcnQoKSk7CisgICAgaWYg
KGl0ZXIgPT0gbV9wZW5kaW5nTWFpblJlc291cmNlUHJlY29ubmVjdHMuZW5kKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIFBlbmRpbmdNYWluUmVzb3VyY2VQcmVjb25uZWN0SW5mbyYgaW5mbyA9
IGl0ZXItPnZhbHVlOworICAgIGlmICghaW5mby5wZW5kaW5nTG9hZHMuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIE5ldHdvcmtMb2FkKiBsb2FkID0gaW5mby5wZW5kaW5nTG9hZHMudGFrZUZpcnN0KCk7
CisgICAgICAgIFJFTEVBU0VfTE9HKE5ldHdvcmssICJOZXR3b3JrTG9hZFNjaGVkdWxlcjo6Zmlu
aXNoZWRQcmVjb25uZWN0Rm9yTWFpblJlc291cmNlIHN0YXJ0aW5nIGRlbGF5ZWQgbWFpbiByZXNv
dXJjZSBsb2FkICVwIiwgbG9hZCk7CisgICAgICAgIGxvYWQtPnN0YXJ0KCk7CisgICAgfQorCisg
ICAgYXV0byBwZW5kaW5nUHJlY29ubmVjdHMgPSAtLWluZm8ucGVuZGluZ1ByZWNvbm5lY3RzOwor
ICAgIGlmICghcGVuZGluZ1ByZWNvbm5lY3RzKQorICAgICAgICBtX3BlbmRpbmdNYWluUmVzb3Vy
Y2VQcmVjb25uZWN0cy5yZW1vdmUoaXRlcik7Cit9CisKK2Jvb2wgTmV0d29ya0xvYWRTY2hlZHVs
ZXI6OmlzT3JpZ2luSFRUUDFYKGNvbnN0IFN0cmluZyYgcHJvdG9jb2xIb3N0QW5kUG9ydCkKK3sK
KyAgICByZXR1cm4gbV9odHRwMVhPcmlnaW5zLmNvbnRhaW5zKHByb3RvY29sSG9zdEFuZFBvcnQp
OworfQorCit2b2lkIE5ldHdvcmtMb2FkU2NoZWR1bGVyOjp1cGRhdGVPcmlnaW5Qcm90b2NvbElu
Zm8oY29uc3QgU3RyaW5nJiBwcm90b2NvbEhvc3RBbmRQb3J0LCBjb25zdCBTdHJpbmcmIGFscG5Q
cm90b2NvbElEKQoreworICAgIGlmIChhbHBuUHJvdG9jb2xJRCAhPSAiaHR0cC8xLjEiX3MpIHsK
KyAgICAgICAgbV9odHRwMVhPcmlnaW5zLnJlbW92ZShwcm90b2NvbEhvc3RBbmRQb3J0KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX2h0dHAxWE9yaWdpbnMuc2l6ZSgpID49
IG1heGltdW1UcmFja2VkSFRUUDFYT3JpZ2lucykKKyAgICAgICAgbV9odHRwMVhPcmlnaW5zLnJl
bW92ZShtX2h0dHAxWE9yaWdpbnMucmFuZG9tKCkpOworCisgICAgbV9odHRwMVhPcmlnaW5zLmFk
ZChwcm90b2NvbEhvc3RBbmRQb3J0KTsKK30KKwogdm9pZCBOZXR3b3JrTG9hZFNjaGVkdWxlcjo6
c2V0UmVzb3VyY2VMb2FkU2NoZWR1bGluZ01vZGUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFn
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OkxvYWRTY2hlZHVsaW5nTW9kZSBtb2RlKQogewogICAgIHN3
aXRjaCAobW9kZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZFNjaGVkdWxlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZFNjaGVkdWxlci5oCmluZGV4IDI5OWM4MWFjMzI4OWY4OWY3NTRhNmM2ZDE5MzMxOTc4
YzJiMjY3OTIuLjk2ODE1ZjQyM2E1ZjZkYjBiMzhiNTQ5Y2YzNTg5YTFlZTJmYTdiZjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRTY2hlZHVsZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkU2NoZWR1bGVy
LmgKQEAgLTI2LDggKzI2LDExIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPFdlYkNvcmUv
TG9hZFNjaGVkdWxpbmdNb2RlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrTG9hZE1ldHJp
Y3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9MaXN0
SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtNDEsMTggKzQ0LDM4IEBAIHB1YmxpYzoKICAgICB+TmV0d29ya0xvYWRTY2hlZHVsZXIo
KTsKIAogICAgIHZvaWQgc2NoZWR1bGUoTmV0d29ya0xvYWQmKTsKLSAgICB2b2lkIHVuc2NoZWR1
bGUoTmV0d29ya0xvYWQmKTsKKyAgICB2b2lkIHVuc2NoZWR1bGUoTmV0d29ya0xvYWQmLCBjb25z
dCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MqID0gbnVsbHB0cik7CisKKyAgICB2b2lkIHN0
YXJ0ZWRQcmVjb25uZWN0Rm9yTWFpblJlc291cmNlKGNvbnN0IFVSTCYpOworICAgIHZvaWQgZmlu
aXNoZWRQcmVjb25uZWN0Rm9yTWFpblJlc291cmNlKGNvbnN0IFVSTCYpOwogCiAgICAgdm9pZCBz
ZXRSZXNvdXJjZUxvYWRTY2hlZHVsaW5nTW9kZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2Vi
Q29yZTo6TG9hZFNjaGVkdWxpbmdNb2RlKTsKICAgICB2b2lkIHByaW9yaXRpemVMb2Fkcyhjb25z
dCBWZWN0b3I8TmV0d29ya0xvYWQqPiYpOwogICAgIHZvaWQgY2xlYXJQYWdlRGF0YShXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcik7CiAKIHByaXZhdGU6CisgICAgdm9pZCBzY2hlZHVsZUxvYWQoTmV0
d29ya0xvYWQmKTsKKyAgICB2b2lkIHVuc2NoZWR1bGVMb2FkKE5ldHdvcmtMb2FkJik7CisKKyAg
ICB2b2lkIHNjaGVkdWxlTWFpblJlc291cmNlTG9hZChOZXR3b3JrTG9hZCYpOworICAgIHZvaWQg
dW5zY2hlZHVsZU1haW5SZXNvdXJjZUxvYWQoTmV0d29ya0xvYWQmLCBjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrTG9hZE1ldHJpY3MqKTsKKworICAgIGJvb2wgaXNPcmlnaW5IVFRQMVgoY29uc3QgU3Ry
aW5nJik7CisgICAgdm9pZCB1cGRhdGVPcmlnaW5Qcm90b2NvbEluZm8oY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJik7CisKICAgICBjbGFzcyBIb3N0Q29udGV4dDsKICAgICBIb3N0Q29udGV4
dCogY29udGV4dEZvckxvYWQoY29uc3QgTmV0d29ya0xvYWQmKTsKIAogICAgIHVzaW5nIFBhZ2VD
b250ZXh0ID0gSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxIb3N0Q29udGV4dD4+Owog
ICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxQYWdl
Q29udGV4dD4+IG1fcGFnZUNvbnRleHRzOworCisgICAgc3RydWN0IFBlbmRpbmdNYWluUmVzb3Vy
Y2VQcmVjb25uZWN0SW5mbyB7CisgICAgICAgIHNpemVfdCBwZW5kaW5nUHJlY29ubmVjdHMgezF9
OworICAgICAgICBMaXN0SGFzaFNldDxOZXR3b3JrTG9hZCAqPiBwZW5kaW5nTG9hZHM7CisgICAg
fTsKKyAgICBIYXNoTWFwPFN0cmluZywgUGVuZGluZ01haW5SZXNvdXJjZVByZWNvbm5lY3RJbmZv
PiBtX3BlbmRpbmdNYWluUmVzb3VyY2VQcmVjb25uZWN0czsKKworICAgIEhhc2hTZXQ8U3RyaW5n
PiBtX2h0dHAxWE9yaWdpbnM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDc0NmJkYzZlZmE5ODkyZDY1OGE4YThiMWY3
ZWMwYjZkM2UzYTZjNmUuLjgyM2M2Y2Y5N2I4YmUyN2U2M2QzOWFiZTY3ZWExMzU3OWM4OTI2Njgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CkBAIC0xMzY0LDcgKzEzNjQsNyBAQCBib29sIE5ldHdvcmtQcm9jZXNzOjpwcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudERlYnVnTW9kZUVuYWJsZWQoKSBjb25zdAogICAgIHJldHVybiBtX3ByaXZhdGVD
bGlja01lYXN1cmVtZW50RGVidWdNb2RlRW5hYmxlZDsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vz
czo6cHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRl
bnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlE
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFdlYkNvcmU6OlN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzdGQ6Om9wdGlvbmFs
PE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
LCBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRp
YXRlZCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZWNvbm5lY3RUbyhjb25zdCBVUkwmIHVybCwg
UHJlY29ubmVjdFJlYXNvbiByZWFzb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFn
ZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
d2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8TmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIExhc3RO
YXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKQog
ewogICAgIExPRyhOZXR3b3JrLCAiKE5ldHdvcmtQcm9jZXNzKSBQcmVjb25uZWN0aW5nIHRvIFVS
TCAlcyAoc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgJWkpIiwgdXJsLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCksIChpbnQpc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpOwogCkBAIC0xMzkzLDcgKzEzOTMs
MTcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmkKICAgICBwYXJhbWV0ZXJzLnN0b3JlZENyZWRl
bnRpYWxzUG9saWN5ID0gc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k7CiAgICAgcGFyYW1ldGVycy5z
aG91bGRQcmVjb25uZWN0T25seSA9IFByZWNvbm5lY3RPbmx5OjpZZXM7CiAKLSAgICAobmV3IFBy
ZWNvbm5lY3RUYXNrKCpuZXR3b3JrU2Vzc2lvbiwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW10oY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIHsgfSkpLT5zdGFydCgpOworICAgIGlmIChyZWFz
b24gPT0gUHJlY29ubmVjdFJlYXNvbjo6TWFpblJlc291cmNlTG9hZCkgeworICAgICAgICBwYXJh
bWV0ZXJzLnJlcXVlc3Quc2V0UHJpb3JpdHkoV2ViQ29yZTo6UmVzb3VyY2VMb2FkUHJpb3JpdHk6
OlZlcnlIaWdoKTsKKyAgICAgICAgbmV0d29ya1Nlc3Npb24tPm5ldHdvcmtMb2FkU2NoZWR1bGVy
KCkuc3RhcnRlZFByZWNvbm5lY3RGb3JNYWluUmVzb3VyY2UodXJsKTsKKyAgICB9CisKKyAgICBh
dXRvIHRhc2sgPSBuZXcgUHJlY29ubmVjdFRhc2soKm5ldHdvcmtTZXNzaW9uLCBXVEZNb3ZlKHBh
cmFtZXRlcnMpLCBbcmVhc29uLCBuZXR3b3JrU2Vzc2lvbiwgdXJsXShjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJikgeworICAgICAgICBpZiAocmVhc29uID09IFByZWNvbm5lY3RSZWFzb246
Ok1haW5SZXNvdXJjZUxvYWQpCisgICAgICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+bmV0d29ya0xv
YWRTY2hlZHVsZXIoKS5maW5pc2hlZFByZWNvbm5lY3RGb3JNYWluUmVzb3VyY2UodXJsKTsKKyAg
ICB9KTsKKyAgICB0YXNrLT5zZXRUaW1lb3V0KDFfcyk7CisgICAgdGFzay0+c3RhcnQoKTsKICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKHVybCk7CiAgICAgVU5VU0VEX1BBUkFNKHVzZXJBZ2VudCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXgg
ZTE2ZjZkZDQ4OTZjZDRjZDk3YjcwM2IzZGE1N2E1NTIyODA5ODQyMi4uZDM2MjI4NjExM2FjZTBj
ZjJiMjBiMDY0OTJlMjVmZGY4MDM2MjliOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkxvY2Fs
U3RvcmFnZURhdGFiYXNlVHJhY2tlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb250ZW50UnVsZUxp
c3RNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIuaCIK
KyNpbmNsdWRlICJQcmVjb25uZWN0UmVhc29uLmgiCiAjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxS
ZW1vdGVNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5j
bHVkZSAiV2ViSURCU2VydmVyLmgiCkBAIC0yOTEsNyArMjkyLDcgQEAgcHVibGljOgogICAgIHVz
aW5nIENhY2hlU3RvcmFnZVJvb3RQYXRoQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0cmluZyYmKT47CiAgICAgdm9pZCBjYWNoZVN0b3JhZ2VSb290UGF0aChQQUw6OlNlc3Npb25J
RCwgQ2FjaGVTdG9yYWdlUm9vdFBhdGhDYWxsYmFjayYmKTsKIAotICAgIHZvaWQgcHJlY29ubmVj
dFRvKFBBTDo6U2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6U3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+
LCBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk7CisgICAgdm9pZCBwcmVjb25uZWN0VG8o
Y29uc3QgVVJMJiwgUHJlY29ubmVjdFJlYXNvbiwgUEFMOjpTZXNzaW9uSUQsIFdlYlBhZ2VQcm94
eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBXZWJD
b3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbj4sIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKTsKIAogICAgIHZv
aWQgc2V0U2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0b21hdGlvbihQQUw6OlNlc3Npb25JRCwgYm9v
bCk7CiAgICAgYm9vbCBzZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKFBBTDo6U2Vzc2lv
bklEKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGNhZWI4ZDliYjg0OGM2OTAwYWU5NTU1ZDA3
NTlmOTJkNTliZjI0OTIuLjA4NTA3MWM4MmVhY2M5MTRiZGExOGNiMDVmNmY3NmFlY2EyOTgzZTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbgpAQCAtNzQsNyArNzQsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJv
Y2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgUHJlcGFyZVRvU3VzcGVuZChib29sIGlzU3VzcGVu
c2lvbkltbWluZW50KSAtPiAoKSBBc3luYwogICAgIFByb2Nlc3NEaWRSZXN1bWUoKQogCi0gICAg
UHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpXZWJQYWdlUHJv
eHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQ
YWdlSUQsIFVSTCB1cmwsIFN0cmluZyB1c2VyQWdlbnQsIGVudW06dWludDhfdCBXZWJDb3JlOjpT
dG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgZW51bTpib29s
IHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgZW51bTpib29sIFdlYktpdDo6TGFzdE5hdmlnYXRpb25X
YXNBcHBJbml0aWF0ZWQgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpOworICAgIFByZWNv
bm5lY3RUbyhVUkwgdXJsLCBlbnVtOnVpbnQ4X3QgV2ViS2l0OjpQcmVjb25uZWN0UmVhc29uIHJl
YXNvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50
aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwg
U3RyaW5nIHVzZXJBZ2VudCwgZW51bTp1aW50OF90IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxz
UG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBlbnVtOmJvb2wgc3RkOjpvcHRpb25hbDxX
ZWJLaXQ6Ok5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluLCBlbnVtOmJvb2wgV2ViS2l0OjpMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCBs
YXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQogICAgIENsZWFyUHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZXNvdXJjZURvbWFpbikgLT4g
KCkgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29u
bmVjdFJlYXNvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0UmVh
c29uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNTA1ZmY0NTFmNTE4OTEzYzdjMDU4MDMyYWY5OGQzNjQzYTAzMjQw
MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29u
bmVjdFJlYXNvbi5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitlbnVtIGNsYXNzIFByZWNvbm5lY3RSZWFzb24gOiB1aW50OF90
IHsKKyAgICBNYWluUmVzb3VyY2VMb2FkLAorICAgIEFQSUhpbnQKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRy
YWl0czxXZWJLaXQ6OlByZWNvbm5lY3RSZWFzb24+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVt
VmFsdWVzPAorICAgIFdlYktpdDo6UHJlY29ubmVjdFJlYXNvbiwKKyAgICBXZWJLaXQ6OlByZWNv
bm5lY3RSZWFzb246Ok1haW5SZXNvdXJjZUxvYWQsCisgICAgV2ViS2l0OjpQcmVjb25uZWN0UmVh
c29uOjpBUElIaW50CisgICAgPjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCmluZGV4IGNlYWIz
ZTM3MDk1OTk4MjdhNGI5YmQ1NWQ4MWIyZjQzODI2Y2Y4NzEuLjQ1NTc4MmQ1NGEyZWE5YmVlMTg2
NTBlMWFmZDFjZjdiMmNlOThjNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUHJlY29ubmVjdFRhc2suY3BwCkBAIC00MSwxMyArNDEsMTMgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKIFByZWNvbm5lY3RUYXNrOjpQcmVjb25uZWN0VGFzayhOZXR3b3JrU2Vzc2lv
biYgbmV0d29ya1Nlc3Npb24sIE5ldHdvcmtMb2FkUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VFcnJvciYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogICAgIDogbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSkKKyAgICAsIG1fdGltZW91dCg2MF9zKQogICAgICwgbV90aW1lb3V0VGltZXIoW3RoaXNd
IHsgZGlkRmluaXNoKFJlc291cmNlRXJyb3IgeyBTdHJpbmcoKSwgMCwgbV9uZXR3b3JrTG9hZC0+
cGFyYW1ldGVycygpLnJlcXVlc3QudXJsKCksICJQcmVjb25uZWN0aW9uIHRpbWVkIG91dCJfcywg
UmVzb3VyY2VFcnJvcjo6VHlwZTo6VGltZW91dCB9KTsgfSkKIHsKICAgICBSRUxFQVNFX0xPRyhO
ZXR3b3JrLCAiJXAgLSBQcmVjb25uZWN0VGFzazo6UHJlY29ubmVjdFRhc2soKSIsIHRoaXMpOwog
CiAgICAgQVNTRVJUKHBhcmFtZXRlcnMuc2hvdWxkUHJlY29ubmVjdE9ubHkgPT0gUHJlY29ubmVj
dE9ubHk6Olllcyk7CiAgICAgbV9uZXR3b3JrTG9hZCA9IG1ha2VVbmlxdWU8TmV0d29ya0xvYWQ+
KCp0aGlzLCBudWxscHRyLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBuZXR3b3JrU2Vzc2lvbik7Ci0g
ICAgbV90aW1lb3V0VGltZXIuc3RhcnRPbmVTaG90KDYwMDAwX3MpOwogfQogCiB2b2lkIFByZWNv
bm5lY3RUYXNrOjpzZXRIMlBpbmdDYWxsYmFjayhjb25zdCBVUkwmIHVybCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChFeHBlY3RlZDxXVEY6OlNlY29uZHMsIFdlYkNvcmU6OlJlc291cmNlRXJyb3I+
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtNTUsOCArNTUsMTQgQEAgdm9pZCBQcmVjb25u
ZWN0VGFzazo6c2V0SDJQaW5nQ2FsbGJhY2soY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoRXgKICAgICBtX25ldHdvcmtMb2FkLT5zZXRIMlBpbmdDYWxsYmFjayh1cmwsIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAordm9pZCBQcmVjb25uZWN0VGFzazo6c2V0
VGltZW91dChTZWNvbmRzIHRpbWVvdXQpCit7CisgICAgbV90aW1lb3V0ID0gdGltZW91dDsKK30K
Kwogdm9pZCBQcmVjb25uZWN0VGFzazo6c3RhcnQoKQogeworICAgIG1fdGltZW91dFRpbWVyLnN0
YXJ0T25lU2hvdChtX3RpbWVvdXQpOwogICAgIG1fbmV0d29ya0xvYWQtPnN0YXJ0KCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2su
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaAppbmRleCAx
MzYyYjBjNjAxOGM0OGEwMTdmYmQ1NjZiZGMzNGM2MmIzNjI1NjNlLi45MDdjNDkyMDFkY2Y3MmQy
MTY1ZDM4ZjUzZWI5ZjcyNWY4MjQwZWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9QcmVjb25uZWN0VGFzay5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJOZXR3
b3JrTG9hZENsaWVudC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KKyNpbmNsdWRlIDxv
cHRpb25hbD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3
dGYvV2Vha1B0ci5oPgogCkBAIC00NSw2ICs0Niw3IEBAIHB1YmxpYzoKICAgICB+UHJlY29ubmVj
dFRhc2soKTsKIAogICAgIHZvaWQgc2V0SDJQaW5nQ2FsbGJhY2soY29uc3QgVVJMJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxXVEY6OlNlY29uZHMsIFdlYkNvcmU6OlJlc291cmNl
RXJyb3I+JiYpPiYmKTsKKyAgICB2b2lkIHNldFRpbWVvdXQoU2Vjb25kcyk7CiAgICAgdm9pZCBz
dGFydCgpOwogCiBwcml2YXRlOgpAQCAtNjIsNiArNjQsNyBAQCBwcml2YXRlOgogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPE5ldHdvcmtMb2FkPiBtX25ldHdvcmtMb2FkOwogICAgIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpPiBtX2NvbXBsZXRpb25I
YW5kbGVyOworICAgIFNlY29uZHMgbV90aW1lb3V0OwogICAgIFdlYkNvcmU6OlRpbWVyIG1fdGlt
ZW91dFRpbWVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KaW5kZXggM2YxZDQ2NDhiNzk1NzU1NDNjZTczMjQxM2FmMTE5MjQwZWI2MGUw
OC4uYjdjZGE5ZTI3NGRlMmNjZGMzZDBmNDNlODc0MDkxOTA2MGZlNzIwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0zMjM5LDcgKzMy
MzksNyBAQCBzdGF0aWMgaW5saW5lIE9wdGlvblNldDxXZWJLaXQ6OkZpbmRPcHRpb25zPiB0b0Zp
bmRPcHRpb25zKF9XS0ZpbmRPcHRpb25zIHdrRmluZAogLSAodm9pZClfcHJlY29ubmVjdFRvU2Vy
dmVyOihOU1VSTCAqKXVybAogewogICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKLSAgICBfcGFnZS0+
cHJlY29ubmVjdFRvKHVybCk7CisgICAgX3BhZ2UtPnByZWNvbm5lY3RUbyh1cmwsIFdlYktpdDo6
UHJlY29ubmVjdFJlYXNvbjo6QVBJSGludCk7CiB9CiAKIC0gKEJPT0wpX2NhblVzZUNyZWRlbnRp
YWxTdG9yYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA2ZjdjYWQxN2UxMWFjZGFiNGM2OTFkNDM0NmM3
NGJjNDA0Mzc4NWY2Li42MDEzYmEwMWVmMGI5OWYyYjA5YmRmNGRiOWVhZGY3YjZhNWU2YjhkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAKQEAgLTE1MTUsMTEgKzE1MTUsMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpnZXRMb2NhbFN0b3JhZ2VEZXRhaWxzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Q29tcGwKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpH
ZXRMb2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKHNlc3Npb25JRCksIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpwcmVjb25uZWN0VG8o
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQ
cm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIExhc3ROYXZpZ2F0aW9u
V2FzQXBwSW5pdGlhdGVkIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKQordm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpwcmVjb25uZWN0VG8oY29uc3QgVVJMJiB1cmwsIFByZWNvbm5lY3RS
ZWFzb24gcmVhc29uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwg
Y29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5
IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBMYXN0TmF2aWdhdGlvbldh
c0FwcEluaXRpYXRlZCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCkKIHsKICAgICBpZiAo
IXVybC5pc1ZhbGlkKCkgfHwgIXVybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpCiAgICAgICAg
IHJldHVybjsKLSAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UHJlY29ubmVjdFRv
KHNlc3Npb25JRCwgd2ViUGFnZVByb3h5SUQsIHdlYlBhZ2VJRCwgdXJsLCB1c2VyQWdlbnQsIHN0
b3JlZENyZWRlbnRpYWxzUG9saWN5LCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBsYXN0
TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCksIDApOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzOjpQcmVjb25uZWN0VG8odXJsLCByZWFzb24sIHNlc3Npb25JRCwgd2ViUGFnZVBy
b3h5SUQsIHdlYlBhZ2VJRCwgdXNlckFnZW50LCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgaXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQp
LCAwKTsKIH0KIAogc3RhdGljIGJvb2wgYW55UHJvY2Vzc1Bvb2xIYXNGb3JlZ3JvdW5kV2ViUHJv
Y2Vzc2VzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggMzMwOTMzZmUyYzhkZDRjMTI0M2QzZWI3ZTdlOWYyZmQ2
YWE1ZGQ2OS4uZGY3ZTI2NWEwYzczZjIxNDQ2YTVlMjM2NzA1MGUzZDJmMjgyNTAyMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJBdXhpbGlhcnlQcm9jZXNzUHJveHku
aCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXNSZXBsaWVzLmgiCiAjaW5j
bHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJQcmVjb25u
ZWN0UmVhc29uLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc0xhdW5jaGVyLmgiCiAjaW5jbHVkZSAiUHJv
Y2Vzc1Rocm90dGxlci5oIgogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXJDbGllbnQuaCIKQEAg
LTEyOSw3ICsxMzAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdldExvY2FsU3RvcmFnZURldGFp
bHMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPExvY2FsU3Rv
cmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlscz4mJik+JiYpOwogCi0gICAgdm9pZCBw
cmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpT
dG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbj4sIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKTsKKyAgICB2b2lkIHByZWNv
bm5lY3RUbyhjb25zdCBVUkwmLCBQcmVjb25uZWN0UmVhc29uLCBQQUw6OlNlc3Npb25JRCwgV2Vi
UGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpOwog
CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICB2b2lkIGNsZWFyUHJl
dmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCmluZGV4IDQxZTgyNjZmNzE3ZDI0ZjNiZTQ0YjVhMmQ3Zjc0NWM5M2MxYTFi
YTkuLjZlZTkxYWU1OGVmODAwZWEzOThmMDFiNWU5NGNkMWM3ZDc0MWRmODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTQwOSw3ICsxNDA5LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiBwcm9jZXMKIAogICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMocHJv
Y2VzcywgbG9hZFBhcmFtZXRlcnMpOwogCi0gICAgcHJlY29ubmVjdFRvKHVybCk7CisgICAgcHJl
Y29ubmVjdFRvKHVybCwgUHJlY29ubmVjdFJlYXNvbjo6TWFpblJlc291cmNlTG9hZCk7CiAKICAg
ICBuYXZpZ2F0aW9uLnNldElzTG9hZGVkV2l0aE5hdmlnYXRpb25TaGFyZWQodHJ1ZSk7CiAKQEAg
LTQ1ODUsMTQgKzQ1ODUsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE5ldHdvcmtSZXF1ZXN0
c0luUHJvZ3Jlc3MoYm9vbCBuZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKQogICAgIG1fcGFnZUxv
YWRTdGF0ZS5zZXROZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKHRyYW5zYWN0aW9uLCBuZXR3b3Jr
UmVxdWVzdHNJblByb2dyZXNzKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnByZWNvbm5lY3RU
byhjb25zdCBVUkwmIHVybCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpwcmVjb25uZWN0VG8oY29uc3Qg
VVJMJiB1cmwsIFByZWNvbm5lY3RSZWFzb24gcmVhc29uKQogewogICAgIGlmICghbV93ZWJzaXRl
RGF0YVN0b3JlLT5jb25maWd1cmF0aW9uKCkuYWxsb3dzU2VydmVyUHJlY29ubmVjdCgpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBhdXRvIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gbV9jYW5V
c2VDcmVkZW50aWFsU3RvcmFnZSA/IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpV
c2UgOiBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RG9Ob3RVc2U7CiAKLSAgICB3
ZWJzaXRlRGF0YVN0b3JlKCkubmV0d29ya1Byb2Nlc3MoKS5wcmVjb25uZWN0VG8oc2Vzc2lvbklE
KCksIGlkZW50aWZpZXIoKSwgd2ViUGFnZUlEKCksIHVybCwgdXNlckFnZW50KCksIHN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5LCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIG1fbGFzdE5h
dmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgPyBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDo6
WWVzIDogTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6Ok5vKTsKKyAgICB3ZWJzaXRlRGF0
YVN0b3JlKCkubmV0d29ya1Byb2Nlc3MoKS5wcmVjb25uZWN0VG8odXJsLCByZWFzb24sIHNlc3Np
b25JRCgpLCBpZGVudGlmaWVyKCksIHdlYlBhZ2VJRCgpLCB1c2VyQWdlbnQoKSwgc3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3ksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgbV9sYXN0TmF2
aWdhdGlvbldhc0FwcEluaXRpYXRlZCA/IExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpZ
ZXMgOiBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDo6Tm8pOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0Q2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UoYm9vbCBjYW5Vc2VDcmVkZW50aWFs
U3RvcmFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZjI0YzAz
MDczMWNhN2QzYTIzOTgwOTc1MzdmMGM3M2Q0NGMxY2NiMC4uZGJkMjg2ODE5OTQyMDkyZjA5Mzlm
MmU5NjkzMzVhNzRjMWZmYzEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJQYXN0ZWJvYXJkQWNjZXNzSW50ZW50Lmgi
CiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJQb2xpY3lE
ZWNpc2lvbi5oIgorI2luY2x1ZGUgIlByZWNvbm5lY3RSZWFzb24uaCIKICNpbmNsdWRlICJQcm9j
ZXNzVGVybWluYXRpb25SZWFzb24uaCIKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyLmgiCiAj
aW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgpAQCAtMTg4MSw3ICsxODgyLDcgQEAgcHVibGlj
OgogCiAgICAgV2ViUG9wdXBNZW51UHJveHkqIGFjdGl2ZVBvcHVwTWVudSgpIGNvbnN0IHsgcmV0
dXJuIG1fYWN0aXZlUG9wdXBNZW51LmdldCgpOyB9CiAKLSAgICB2b2lkIHByZWNvbm5lY3RUbyhj
b25zdCBVUkwmKTsKKyAgICB2b2lkIHByZWNvbm5lY3RUbyhjb25zdCBVUkwmLCBQcmVjb25uZWN0
UmVhc29uKTsKIAogICAgIGJvb2wgY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UoKSB7IHJldHVybiBt
X2NhblVzZUNyZWRlbnRpYWxTdG9yYWdlOyB9CiAgICAgdm9pZCBzZXRDYW5Vc2VDcmVkZW50aWFs
U3RvcmFnZShib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDllNDE2ZWYzNzQ0NGU0MmViZTY4YzBlMTAwMjRiY2VjZmZiMjdmODgu
LjBhMTA1ODc5YjNiY2ExZmJkMWY5M2I4MWE1ZGRjMDZmMGMyOTI4MTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjAwNSw2ICs2MDA1
LDcgQEAKIAkJRTVCRUY2ODEyMTMwQzQ3RjAwRjMxMTExIC8qIFdlYkRhdGFMaXN0U3VnZ2VzdGlv
bnNEcm9wZG93bklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9
IFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5tbTsgcGF0aCA9IGlvcy9XZWJEYXRh
TGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUU1Q0IwN0RBMjBFMTY3OEYwMDIyQzE4MyAvKiBXS0Zvcm1Db2xvckNvbnRyb2wuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gV0tGb3JtQ29sb3JDb250cm9sLmg7IHBhdGggPSBpb3MvZm9ybXMvV0tGb3Jt
Q29sb3JDb250cm9sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU1Q0IwN0RCMjBF
MTY3OEYwMDIyQzE4MyAvKiBXS0Zvcm1Db2xvckNvbnRyb2wubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5h
bWUgPSBXS0Zvcm1Db2xvckNvbnRyb2wubW07IHBhdGggPSBpb3MvZm9ybXMvV0tGb3JtQ29sb3JD
b250cm9sLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFQjk1MTQ3MjI2REREN0M2
MDAxMTMzQUEgLyogUHJlY29ubmVjdFJlYXNvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQcmVjb25uZWN0UmVhc29uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUVDQTY4MEQzMUU2OTA0QjUwMDczMUQyMCAvKiBFeHRyYVByaXZhdGVTeW1ib2xzRm9yVEFQSS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeHRyYVByaXZhdGVTeW1ib2xzRm9y
VEFQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFQ0JGQzFEQjFFNkE0RDY2MDAw
MzAwQzcgLyogRXh0cmFQdWJsaWNTeW1ib2xzRm9yVEFQSS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeHRy
YVB1YmxpY1N5bWJvbHNGb3JUQVBJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYw
MzY5Nzg3MTVGNEJGMDUwMEMzQTgwRSAvKiBXZWJDb2xvclBpY2tlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb2xvclBpY2tlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC04NzUwLDYgKzg3NTEsNyBAQAogCQkJCTUxODMyNDdBMjYxNjg2
NzUwMDNGMjM5RSAvKiBOZXR3b3JrVVJMU2NoZW1lVGFzay5oICovLAogCQkJCTQ2MjEwN0Q3MUYz
OERCRDMwMERENzgxMCAvKiBQaW5nTG9hZC5jcHAgKi8sCiAJCQkJNUNFODVCMUYxQzg4RTY0MzAw
NzBCRkNFIC8qIFBpbmdMb2FkLmggKi8sCisJCQkJRUI5NTE0NzIyNkRERDdDNjAwMTEzM0FBIC8q
IFByZWNvbm5lY3RSZWFzb24uaCAqLywKIAkJCQk4M0EwRUQzMzFGNzQ3Q0M3MDAzMjk5RUIgLyog
UHJlY29ubmVjdFRhc2suY3BwICovLAogCQkJCTgzQTBFRDMyMUY3NDdDQzYwMDMyOTlFQiAvKiBQ
cmVjb25uZWN0VGFzay5oICovLAogCQkJCTZCRDA1ODY0MjIwQ0U4QzIwMDBCRUQ1QyAvKiBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436977</attachid>
            <date>2021-08-31 18:10:46 -0700</date>
            <delta_ts>2021-09-07 10:30:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229686-20210831181045.patch</filename>
            <type>text/plain</type>
            <size>29293</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDYxZjdhZDFjYTg4N2Q1YmZk
MjEyZjQzOTNkMGM1MmFlYWFjMGI1N2IuLmQxNDc2NGJmZjA5NDY1OGM4ZGM2OWU2ODI3ZGY4OTU1
NDA3YWFmYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMjEtMDgtMzAgIEJlbiBOaGFt
ICA8bmhhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUHJlY29ubmVjdGVkIHNvY2tldCBpcyBzb21l
dGltZXMgbm90IHVzZWQgZm9yIGluaXRpYWwgcmVxdWVzdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5Njg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRDb21wbGV0ZVdpdGhFcnJvcik6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRTY2hlZHVsZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGUpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrTG9hZFNjaGVkdWxlcjo6dW5zY2hlZHVsZSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZUxvYWQpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrTG9hZFNjaGVkdWxlcjo6dW5zY2hlZHVsZUxvYWQpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVNYWluUmVzb3VyY2VMb2FkKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0xvYWRTY2hlZHVsZXI6OnVuc2NoZWR1bGVNYWluUmVzb3VyY2VM
b2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRTY2hlZHVsZXI6OnN0YXJ0ZWRQcmVj
b25uZWN0Rm9yTWFpblJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRTY2hl
ZHVsZXI6OmZpbmlzaGVkUHJlY29ubmVjdEZvck1haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtMb2FkU2NoZWR1bGVyOjppc09yaWdpbkhUVFAxWCk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtMb2FkU2NoZWR1bGVyOjp1cGRhdGVPcmlnaW5Qcm90b2NvbEluZm8pOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkU2NoZWR1bGVyLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6cHJlY29ubmVjdFRvKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1l
c3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RSZWFzb24uaDog
Q29waWVkIGZyb20gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFNjaGVk
dWxlci5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgX3ByZWNvbm5lY3RUb1NlcnZlcjpdKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6cHJlY29ubmVjdFRvKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RX
aXRoTmF2aWdhdGlvblNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cHJl
Y29ubmVjdFRvKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAg
ICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjEtMDgtMjYgIERhcmlu
IEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEN1dCBkb3duIG9uIHVzZSBvZiBD
RkdldFR5cGVJRCwgdXNpbmcgZHluYW1pY19jZl9jYXN0IGluc3RlYWQ7IHJlbGF0ZWQgc3RyZWFt
bGluaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCmlu
ZGV4IDNlNzMxMTE3MWE5NDBiNDQ5M2VkNDZhMWZlZDA2YjY2ZmMwYjYxZDAuLjJhYTAzNzcyZmE1
OWI4YjNlODI0NjY3ODBhMzViZmU2NGIxMjBkZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCkBAIC0yNDUsNyArMjQ1LDcgQEAgdm9pZCBOZXR3b3Jr
TG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB2b2lkIE5l
dHdvcmtMb2FkOjpkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
ciwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3Mp
CiB7CiAgICAgaWYgKG1fc2NoZWR1bGVyKSB7Ci0gICAgICAgIG1fc2NoZWR1bGVyLT51bnNjaGVk
dWxlKCp0aGlzKTsKKyAgICAgICAgbV9zY2hlZHVsZXItPnVuc2NoZWR1bGUoKnRoaXMsICZuZXR3
b3JrTG9hZE1ldHJpY3MpOwogICAgICAgICBtX3NjaGVkdWxlciA9IG51bGxwdHI7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkU2No
ZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRTY2hl
ZHVsZXIuY3BwCmluZGV4IDFlNDgwZjU0YTJhZTY5NzMxZTc1MzYzN2JmMDhkMzAxNDIzYzcyZWYu
LjZiM2YwMDllM2VlYmU3YzZjNzg3ZmY2NDRkZjIxNmQ3ZGM5MGNmNDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRTY2hlZHVsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRTY2hlZHVsZXIuY3BwCkBA
IC0yNiwxMiArMjYsMTMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3b3Jr
TG9hZFNjaGVkdWxlci5oIgogCisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdv
cmtMb2FkLmgiCi0jaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBzdGF0aWMgY29uc3RleHByIHNpemVfdCBtYXhpbXVtQWN0aXZlQ291bnRGb3JMb3dQ
cmlvcml0eSA9IDI7CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBtYXhpbXVtVHJhY2tlZEhUVFAx
WE9yaWdpbnMgPSAxMjg7CiAKIGNsYXNzIE5ldHdvcmtMb2FkU2NoZWR1bGVyOjpIb3N0Q29udGV4
dCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0xMTYsNiArMTE3LDI0IEBAIE5l
dHdvcmtMb2FkU2NoZWR1bGVyOjpOZXR3b3JrTG9hZFNjaGVkdWxlcigpID0gZGVmYXVsdDsKIE5l
dHdvcmtMb2FkU2NoZWR1bGVyOjp+TmV0d29ya0xvYWRTY2hlZHVsZXIoKSA9IGRlZmF1bHQ7CiAK
IHZvaWQgTmV0d29ya0xvYWRTY2hlZHVsZXI6OnNjaGVkdWxlKE5ldHdvcmtMb2FkJiBsb2FkKQor
eworICAgIGJvb2wgaXNNYWluRnJhbWVNYWluUmVzb3VyY2UgPSBsb2FkLmN1cnJlbnRSZXF1ZXN0
KCkuaXNUb3BTaXRlKCk7CisgICAgaWYgKGlzTWFpbkZyYW1lTWFpblJlc291cmNlKQorICAgICAg
ICBzY2hlZHVsZU1haW5SZXNvdXJjZUxvYWQobG9hZCk7CisgICAgZWxzZQorICAgICAgICBzY2hl
ZHVsZUxvYWQobG9hZCk7Cit9CisKK3ZvaWQgTmV0d29ya0xvYWRTY2hlZHVsZXI6OnVuc2NoZWR1
bGUoTmV0d29ya0xvYWQmIGxvYWQsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyog
bWV0cmljcykKK3sKKyAgICBib29sIGlzTWFpbkZyYW1lTWFpblJlc291cmNlID0gbG9hZC5jdXJy
ZW50UmVxdWVzdCgpLmlzVG9wU2l0ZSgpOworICAgIGlmIChpc01haW5GcmFtZU1haW5SZXNvdXJj
ZSkKKyAgICAgICAgdW5zY2hlZHVsZU1haW5SZXNvdXJjZUxvYWQobG9hZCwgbWV0cmljcyk7Cisg
ICAgZWxzZQorICAgICAgICB1bnNjaGVkdWxlTG9hZChsb2FkKTsKK30KKwordm9pZCBOZXR3b3Jr
TG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVMb2FkKE5ldHdvcmtMb2FkJiBsb2FkKQogewogICAgIGF1
dG8qIGNvbnRleHQgPSBjb250ZXh0Rm9yTG9hZChsb2FkKTsKIApAQCAtMTI3LDEyICsxNDYsMTEw
IEBAIHZvaWQgTmV0d29ya0xvYWRTY2hlZHVsZXI6OnNjaGVkdWxlKE5ldHdvcmtMb2FkJiBsb2Fk
KQogICAgIGNvbnRleHQtPnNjaGVkdWxlKGxvYWQpOwogfQogCi12b2lkIE5ldHdvcmtMb2FkU2No
ZWR1bGVyOjp1bnNjaGVkdWxlKE5ldHdvcmtMb2FkJiBsb2FkKQordm9pZCBOZXR3b3JrTG9hZFNj
aGVkdWxlcjo6dW5zY2hlZHVsZUxvYWQoTmV0d29ya0xvYWQmIGxvYWQpCiB7CiAgICAgaWYgKGF1
dG8qIGNvbnRleHQgPSBjb250ZXh0Rm9yTG9hZChsb2FkKSkKICAgICAgICAgY29udGV4dC0+dW5z
Y2hlZHVsZShsb2FkKTsKIH0KIAordm9pZCBOZXR3b3JrTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVN
YWluUmVzb3VyY2VMb2FkKE5ldHdvcmtMb2FkJiBsb2FkKQoreworICAgIFN0cmluZyBwcm90b2Nv
bEhvc3RBbmRQb3J0ID0gbG9hZC51cmwoKS5wcm90b2NvbEhvc3RBbmRQb3J0KCk7CisgICAgaWYg
KCFpc09yaWdpbkhUVFAxWChwcm90b2NvbEhvc3RBbmRQb3J0KSkgeworICAgICAgICBsb2FkLnN0
YXJ0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGl0ZXIgPSBtX3BlbmRp
bmdNYWluUmVzb3VyY2VQcmVjb25uZWN0cy5maW5kKHByb3RvY29sSG9zdEFuZFBvcnQpOworICAg
IGlmIChpdGVyID09IG1fcGVuZGluZ01haW5SZXNvdXJjZVByZWNvbm5lY3RzLmVuZCgpKSB7Cisg
ICAgICAgIGxvYWQuc3RhcnQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFBlbmRp
bmdNYWluUmVzb3VyY2VQcmVjb25uZWN0SW5mbyYgaW5mbyA9IGl0ZXItPnZhbHVlOworICAgIGlm
ICghaW5mby5wZW5kaW5nUHJlY29ubmVjdHMpIHsKKyAgICAgICAgbG9hZC5zdGFydCgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgLS1pbmZvLnBlbmRpbmdQcmVjb25uZWN0czsKKyAg
ICBpbmZvLnBlbmRpbmdMb2Fkcy5hZGQoJmxvYWQpOworICAgIFJFTEVBU0VfTE9HKE5ldHdvcmss
ICIlcCAtIE5ldHdvcmtMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZU1haW5SZXNvdXJjZUxvYWQgZGVm
ZXJyaW5nIGxvYWQgJXA7ICV1IHBlbmRpbmcgcHJlY29ubmVjdHM7ICV1IHBlbmRpbmcgbG9hZHMi
LCB0aGlzLCAmbG9hZCwgaW5mby5wZW5kaW5nUHJlY29ubmVjdHMsIGluZm8ucGVuZGluZ0xvYWRz
LnNpemUoKSk7Cit9CisKK3ZvaWQgTmV0d29ya0xvYWRTY2hlZHVsZXI6OnVuc2NoZWR1bGVNYWlu
UmVzb3VyY2VMb2FkKE5ldHdvcmtMb2FkJiBsb2FkLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9h
ZE1ldHJpY3MqIG1ldHJpY3MpCit7CisgICAgU3RyaW5nIHByb3RvY29sSG9zdEFuZFBvcnQgPSBs
b2FkLnVybCgpLnByb3RvY29sSG9zdEFuZFBvcnQoKTsKKworICAgIGlmIChtZXRyaWNzKQorICAg
ICAgICB1cGRhdGVPcmlnaW5Qcm90b2NvbEluZm8ocHJvdG9jb2xIb3N0QW5kUG9ydCwgbWV0cmlj
cy0+cHJvdG9jb2wpOworCisgICAgYXV0byBpdGVyID0gbV9wZW5kaW5nTWFpblJlc291cmNlUHJl
Y29ubmVjdHMuZmluZChwcm90b2NvbEhvc3RBbmRQb3J0KTsKKyAgICBpZiAoaXRlciA9PSBtX3Bl
bmRpbmdNYWluUmVzb3VyY2VQcmVjb25uZWN0cy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgUGVuZGluZ01haW5SZXNvdXJjZVByZWNvbm5lY3RJbmZvJiBpbmZvID0gaXRlci0+dmFsdWU7
CisgICAgaWYgKGluZm8ucGVuZGluZ0xvYWRzLnJlbW92ZSgmbG9hZCkpCisgICAgICAgIG1heWJl
UHJ1bmVQcmVjb25uZWN0SW5mbyhpdGVyKTsKK30KKwordm9pZCBOZXR3b3JrTG9hZFNjaGVkdWxl
cjo6c3RhcnRlZFByZWNvbm5lY3RGb3JNYWluUmVzb3VyY2UoY29uc3QgVVJMJiB1cmwpCit7Cisg
ICAgYXV0byBpdGVyID0gbV9wZW5kaW5nTWFpblJlc291cmNlUHJlY29ubmVjdHMuZmluZCh1cmwu
cHJvdG9jb2xIb3N0QW5kUG9ydCgpKTsKKyAgICBpZiAoaXRlciAhPSBtX3BlbmRpbmdNYWluUmVz
b3VyY2VQcmVjb25uZWN0cy5lbmQoKSkgeworICAgICAgICBQZW5kaW5nTWFpblJlc291cmNlUHJl
Y29ubmVjdEluZm8mIGluZm8gPSBpdGVyLT52YWx1ZTsKKyAgICAgICAgaW5mby5wZW5kaW5nUHJl
Y29ubmVjdHMrKzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFBlbmRpbmdNYWluUmVz
b3VyY2VQcmVjb25uZWN0SW5mbyBpbmZvOworICAgIG1fcGVuZGluZ01haW5SZXNvdXJjZVByZWNv
bm5lY3RzLmFkZCh1cmwucHJvdG9jb2xIb3N0QW5kUG9ydCgpLCBXVEZNb3ZlKGluZm8pKTsKK30K
Kwordm9pZCBOZXR3b3JrTG9hZFNjaGVkdWxlcjo6ZmluaXNoZWRQcmVjb25uZWN0Rm9yTWFpblJl
c291cmNlKGNvbnN0IFVSTCYgdXJsKQoreworICAgIGF1dG8gaXRlciA9IG1fcGVuZGluZ01haW5S
ZXNvdXJjZVByZWNvbm5lY3RzLmZpbmQodXJsLnByb3RvY29sSG9zdEFuZFBvcnQoKSk7CisgICAg
aWYgKGl0ZXIgPT0gbV9wZW5kaW5nTWFpblJlc291cmNlUHJlY29ubmVjdHMuZW5kKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIFBlbmRpbmdNYWluUmVzb3VyY2VQcmVjb25uZWN0SW5mbyYgaW5m
byA9IGl0ZXItPnZhbHVlOworICAgIGlmICghaW5mby5wZW5kaW5nTG9hZHMuaXNFbXB0eSgpKSB7
CisgICAgICAgIE5ldHdvcmtMb2FkKiBsb2FkID0gaW5mby5wZW5kaW5nTG9hZHMudGFrZUZpcnN0
KCk7CisgICAgICAgIFJFTEVBU0VfTE9HKE5ldHdvcmssICIlcCAtIE5ldHdvcmtMb2FkU2NoZWR1
bGVyOjpmaW5pc2hlZFByZWNvbm5lY3RGb3JNYWluUmVzb3VyY2Ugc3RhcnRpbmcgZGVsYXllZCBt
YWluIHJlc291cmNlIGxvYWQgJXA7ICV1IHBlbmRpbmcgcHJlY29ubmVjdHM7ICV1IHRvdGFsIHBl
bmRpbmcgbG9hZHMiLCB0aGlzLCBsb2FkLCBpbmZvLnBlbmRpbmdQcmVjb25uZWN0cywgaW5mby5w
ZW5kaW5nTG9hZHMuc2l6ZSgpKTsKKyAgICAgICAgbG9hZC0+c3RhcnQoKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICAtLWluZm8ucGVuZGluZ1ByZWNvbm5lY3RzOworICAgIH0KKworICAgIG1heWJl
UHJ1bmVQcmVjb25uZWN0SW5mbyhpdGVyKTsKK30KKwordm9pZCBOZXR3b3JrTG9hZFNjaGVkdWxl
cjo6bWF5YmVQcnVuZVByZWNvbm5lY3RJbmZvKFBlbmRpbmdQcmVjb25uZWN0TWFwOjppdGVyYXRv
ciYgaXRlcikKK3sKKyAgICBQZW5kaW5nTWFpblJlc291cmNlUHJlY29ubmVjdEluZm8mIGluZm8g
PSBpdGVyLT52YWx1ZTsKKyAgICBpZiAoIWluZm8ucGVuZGluZ1ByZWNvbm5lY3RzICYmIGluZm8u
cGVuZGluZ0xvYWRzLmlzRW1wdHkoKSkKKyAgICAgICAgbV9wZW5kaW5nTWFpblJlc291cmNlUHJl
Y29ubmVjdHMucmVtb3ZlKGl0ZXIpOworfQorCisKK2Jvb2wgTmV0d29ya0xvYWRTY2hlZHVsZXI6
OmlzT3JpZ2luSFRUUDFYKGNvbnN0IFN0cmluZyYgcHJvdG9jb2xIb3N0QW5kUG9ydCkKK3sKKyAg
ICByZXR1cm4gbV9odHRwMVhPcmlnaW5zLmNvbnRhaW5zKHByb3RvY29sSG9zdEFuZFBvcnQpOwor
fQorCit2b2lkIE5ldHdvcmtMb2FkU2NoZWR1bGVyOjp1cGRhdGVPcmlnaW5Qcm90b2NvbEluZm8o
Y29uc3QgU3RyaW5nJiBwcm90b2NvbEhvc3RBbmRQb3J0LCBjb25zdCBTdHJpbmcmIGFscG5Qcm90
b2NvbElEKQoreworICAgIGlmIChhbHBuUHJvdG9jb2xJRCAhPSAiaHR0cC8xLjEiX3MpIHsKKyAg
ICAgICAgbV9odHRwMVhPcmlnaW5zLnJlbW92ZShwcm90b2NvbEhvc3RBbmRQb3J0KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX2h0dHAxWE9yaWdpbnMuc2l6ZSgpID49IG1h
eGltdW1UcmFja2VkSFRUUDFYT3JpZ2lucykKKyAgICAgICAgbV9odHRwMVhPcmlnaW5zLnJlbW92
ZShtX2h0dHAxWE9yaWdpbnMucmFuZG9tKCkpOworCisgICAgbV9odHRwMVhPcmlnaW5zLmFkZChw
cm90b2NvbEhvc3RBbmRQb3J0KTsKK30KKwogdm9pZCBOZXR3b3JrTG9hZFNjaGVkdWxlcjo6c2V0
UmVzb3VyY2VMb2FkU2NoZWR1bGluZ01vZGUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlk
ZW50aWZpZXIsIFdlYkNvcmU6OkxvYWRTY2hlZHVsaW5nTW9kZSBtb2RlKQogewogICAgIHN3aXRj
aCAobW9kZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZFNjaGVkdWxlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZFNjaGVkdWxlci5oCmluZGV4IDI5OWM4MWFjMzI4OWY4OWY3NTRhNmM2ZDE5MzMxOTc4YzJi
MjY3OTIuLjUyMTBjMWQ2MWJhM2ZmNzEyMDA2MjM1OWNmZTM3ODgyNmZmZDZkYmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRTY2hlZHVsZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkU2NoZWR1bGVyLmgK
QEAgLTI2LDggKzI2LDExIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPFdlYkNvcmUvTG9h
ZFNjaGVkdWxpbmdNb2RlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrTG9hZE1ldHJpY3Mu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9MaXN0SGFz
aFNldC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpA
QCAtNDEsMTggKzQ0LDQxIEBAIHB1YmxpYzoKICAgICB+TmV0d29ya0xvYWRTY2hlZHVsZXIoKTsK
IAogICAgIHZvaWQgc2NoZWR1bGUoTmV0d29ya0xvYWQmKTsKLSAgICB2b2lkIHVuc2NoZWR1bGUo
TmV0d29ya0xvYWQmKTsKKyAgICB2b2lkIHVuc2NoZWR1bGUoTmV0d29ya0xvYWQmLCBjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MqID0gbnVsbHB0cik7CisKKyAgICB2b2lkIHN0YXJ0
ZWRQcmVjb25uZWN0Rm9yTWFpblJlc291cmNlKGNvbnN0IFVSTCYpOworICAgIHZvaWQgZmluaXNo
ZWRQcmVjb25uZWN0Rm9yTWFpblJlc291cmNlKGNvbnN0IFVSTCYpOwogCiAgICAgdm9pZCBzZXRS
ZXNvdXJjZUxvYWRTY2hlZHVsaW5nTW9kZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29y
ZTo6TG9hZFNjaGVkdWxpbmdNb2RlKTsKICAgICB2b2lkIHByaW9yaXRpemVMb2Fkcyhjb25zdCBW
ZWN0b3I8TmV0d29ya0xvYWQqPiYpOwogICAgIHZvaWQgY2xlYXJQYWdlRGF0YShXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcik7CiAKIHByaXZhdGU6CisgICAgdm9pZCBzY2hlZHVsZUxvYWQoTmV0d29y
a0xvYWQmKTsKKyAgICB2b2lkIHVuc2NoZWR1bGVMb2FkKE5ldHdvcmtMb2FkJik7CisKKyAgICB2
b2lkIHNjaGVkdWxlTWFpblJlc291cmNlTG9hZChOZXR3b3JrTG9hZCYpOworICAgIHZvaWQgdW5z
Y2hlZHVsZU1haW5SZXNvdXJjZUxvYWQoTmV0d29ya0xvYWQmLCBjb25zdCBXZWJDb3JlOjpOZXR3
b3JrTG9hZE1ldHJpY3MqKTsKKworICAgIGJvb2wgaXNPcmlnaW5IVFRQMVgoY29uc3QgU3RyaW5n
Jik7CisgICAgdm9pZCB1cGRhdGVPcmlnaW5Qcm90b2NvbEluZm8oY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJik7CisKICAgICBjbGFzcyBIb3N0Q29udGV4dDsKICAgICBIb3N0Q29udGV4dCog
Y29udGV4dEZvckxvYWQoY29uc3QgTmV0d29ya0xvYWQmKTsKIAogICAgIHVzaW5nIFBhZ2VDb250
ZXh0ID0gSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxIb3N0Q29udGV4dD4+OwogICAg
IEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxQYWdlQ29u
dGV4dD4+IG1fcGFnZUNvbnRleHRzOworCisgICAgc3RydWN0IFBlbmRpbmdNYWluUmVzb3VyY2VQ
cmVjb25uZWN0SW5mbyB7CisgICAgICAgIHVuc2lnbmVkIHBlbmRpbmdQcmVjb25uZWN0cyB7MX07
CisgICAgICAgIExpc3RIYXNoU2V0PE5ldHdvcmtMb2FkICo+IHBlbmRpbmdMb2FkczsKKyAgICB9
OworICAgIHVzaW5nIFBlbmRpbmdQcmVjb25uZWN0TWFwID0gSGFzaE1hcDxTdHJpbmcsIFBlbmRp
bmdNYWluUmVzb3VyY2VQcmVjb25uZWN0SW5mbz47CisgICAgUGVuZGluZ1ByZWNvbm5lY3RNYXAg
bV9wZW5kaW5nTWFpblJlc291cmNlUHJlY29ubmVjdHM7CisKKyAgICB2b2lkIG1heWJlUHJ1bmVQ
cmVjb25uZWN0SW5mbyhQZW5kaW5nUHJlY29ubmVjdE1hcDo6aXRlcmF0b3ImIGl0ZXIpOworCisg
ICAgSGFzaFNldDxTdHJpbmc+IG1faHR0cDFYT3JpZ2luczsKIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggNzQ2YmRjNmVm
YTk4OTJkNjU4YThhOGIxZjdlYzBiNmQzZTNhNmM2ZS4uODIzYzZjZjk3YjhiZTI3ZTYzZDM5YWJl
NjdlYTEzNTc5Yzg5MjY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTEzNjQsNyArMTM2NCw3IEBAIGJvb2wgTmV0d29ya1Byb2Nl
c3M6OnByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdNb2RlRW5hYmxlZCgpIGNvbnN0CiAgICAg
cmV0dXJuIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z01vZGVFbmFibGVkOwogfQogCi12
b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciB3ZWJQYWdlSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2Vu
dCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3ksIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4sIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIGxhc3ROYXZp
Z2F0aW9uV2FzQXBwSW5pdGlhdGVkKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlY29ubmVjdFRv
KGNvbnN0IFVSTCYgdXJsLCBQcmVjb25uZWN0UmVhc29uIHJlYXNvbiwgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBXZWJD
b3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc3Rk
OjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbiwgTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgbGFzdE5hdmlnYXRpb25X
YXNBcHBJbml0aWF0ZWQpCiB7CiAgICAgTE9HKE5ldHdvcmssICIoTmV0d29ya1Byb2Nlc3MpIFBy
ZWNvbm5lY3RpbmcgdG8gVVJMICVzIChzdG9yZWRDcmVkZW50aWFsc1BvbGljeSAlaSkiLCB1cmwu
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgKGludClzdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CiAK
QEAgLTEzOTMsNyArMTM5MywxNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVjb25uZWN0VG8o
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaQogICAgIHBhcmFt
ZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeTsK
ICAgICBwYXJhbWV0ZXJzLnNob3VsZFByZWNvbm5lY3RPbmx5ID0gUHJlY29ubmVjdE9ubHk6Olll
czsKIAotICAgIChuZXcgUHJlY29ubmVjdFRhc2soKm5ldHdvcmtTZXNzaW9uLCBXVEZNb3ZlKHBh
cmFtZXRlcnMpLCBbXShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgeyB9KSktPnN0YXJ0
KCk7CisgICAgaWYgKHJlYXNvbiA9PSBQcmVjb25uZWN0UmVhc29uOjpNYWluUmVzb3VyY2VMb2Fk
KSB7CisgICAgICAgIHBhcmFtZXRlcnMucmVxdWVzdC5zZXRQcmlvcml0eShXZWJDb3JlOjpSZXNv
dXJjZUxvYWRQcmlvcml0eTo6VmVyeUhpZ2gpOworICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+bmV0
d29ya0xvYWRTY2hlZHVsZXIoKS5zdGFydGVkUHJlY29ubmVjdEZvck1haW5SZXNvdXJjZSh1cmwp
OworICAgIH0KKworICAgIGF1dG8gdGFzayA9IG5ldyBQcmVjb25uZWN0VGFzaygqbmV0d29ya1Nl
c3Npb24sIFdURk1vdmUocGFyYW1ldGVycyksIFtyZWFzb24sIG5ldHdvcmtTZXNzaW9uLCB1cmxd
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSB7CisgICAgICAgIGlmIChyZWFzb24gPT0g
UHJlY29ubmVjdFJlYXNvbjo6TWFpblJlc291cmNlTG9hZCkKKyAgICAgICAgICAgIG5ldHdvcmtT
ZXNzaW9uLT5uZXR3b3JrTG9hZFNjaGVkdWxlcigpLmZpbmlzaGVkUHJlY29ubmVjdEZvck1haW5S
ZXNvdXJjZSh1cmwpOworICAgIH0pOworICAgIHRhc2stPnNldFRpbWVvdXQoMV9zKTsKKyAgICB0
YXNrLT5zdGFydCgpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0odXJsKTsKICAgICBVTlVTRURf
UEFSQU0odXNlckFnZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaAppbmRleCBlMTZmNmRkNDg5NmNkNGNkOTdiNzAzYjNkYTU3YTU1MjI4MDk4NDIy
Li5kMzYyMjg2MTEzYWNlMGNmMmIyMGIwNjQ5MmUyNWZkZjgwMzYyOWI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0zMyw2ICszMyw3IEBA
CiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5jbHVkZSAiTmV0
d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VM
b2FkSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlByZWNvbm5lY3RSZWFzb24uaCIKICNpbmNsdWRl
ICJSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIlNhbmRib3hF
eHRlbnNpb24uaCIKICNpbmNsdWRlICJXZWJJREJTZXJ2ZXIuaCIKQEAgLTI5MSw3ICsyOTIsNyBA
QCBwdWJsaWM6CiAgICAgdXNpbmcgQ2FjaGVTdG9yYWdlUm9vdFBhdGhDYWxsYmFjayA9IENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPjsKICAgICB2b2lkIGNhY2hlU3RvcmFnZVJvb3RQ
YXRoKFBBTDo6U2Vzc2lvbklELCBDYWNoZVN0b3JhZ2VSb290UGF0aENhbGxiYWNrJiYpOwogCi0g
ICAgdm9pZCBwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBX
ZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbj4sIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKTsKKyAgICB2
b2lkIHByZWNvbm5lY3RUbyhjb25zdCBVUkwmLCBQcmVjb25uZWN0UmVhc29uLCBQQUw6OlNlc3Np
b25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzdGQ6Om9wdGlv
bmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0
aWF0ZWQpOwogCiAgICAgdm9pZCBzZXRTZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKFBB
TDo6U2Vzc2lvbklELCBib29sKTsKICAgICBib29sIHNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9t
YXRpb24oUEFMOjpTZXNzaW9uSUQpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggY2FlYjhkOWJi
ODQ4YzY5MDBhZTk1NTVkMDc1OWY5MmQ1OWJmMjQ5Mi4uMDg1MDcxYzgyZWFjYzkxNGJkYTE4Y2Iw
NWY2Zjc2YWVjYTI5ODNlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC03NCw3ICs3NCw3IEBAIG1lc3Nh
Z2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBQcmVwYXJlVG9TdXNw
ZW5kKGJvb2wgaXNTdXNwZW5zaW9uSW1taW5lbnQpIC0+ICgpIEFzeW5jCiAgICAgUHJvY2Vzc0Rp
ZFJlc3VtZSgpCiAKLSAgICBQcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBX
ZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgVVJMIHVybCwgU3RyaW5nIHVzZXJBZ2VudCwgZW51bTp1
aW50OF90IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxz
UG9saWN5LCBlbnVtOmJvb2wgc3RkOjpvcHRpb25hbDxXZWJLaXQ6Ok5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBlbnVtOmJvb2wgV2ViS2l0
OjpMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRp
YXRlZCk7CisgICAgUHJlY29ubmVjdFRvKFVSTCB1cmwsIGVudW06dWludDhfdCBXZWJLaXQ6OlBy
ZWNvbm5lY3RSZWFzb24gcmVhc29uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6
V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgd2ViUGFnZUlELCBTdHJpbmcgdXNlckFnZW50LCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6
U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGVudW06Ym9v
bCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4sIGVudW06Ym9vbCBXZWJLaXQ6Okxhc3ROYXZpZ2F0aW9u
V2FzQXBwSW5pdGlhdGVkIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKTsKIAogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgQ2xlYXJQcmV2YWxlbnRSZXNvdXJj
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJl
c291cmNlRG9tYWluKSAtPiAoKSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9QcmVjb25uZWN0UmVhc29uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1ByZWNvbm5lY3RSZWFzb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MDVmZjQ1MWY1MTg5MTNjN2MwNTgw
MzJhZjk4ZDM2NDNhMDMyNDAwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9QcmVjb25uZWN0UmVhc29uLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8d3RmL0Vu
dW1UcmFpdHMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gY2xhc3MgUHJlY29ubmVj
dFJlYXNvbiA6IHVpbnQ4X3QgeworICAgIE1haW5SZXNvdXJjZUxvYWQsCisgICAgQVBJSGludAor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0
ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6UHJlY29ubmVjdFJlYXNvbj4geworICAgIHVz
aW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgV2ViS2l0OjpQcmVjb25uZWN0UmVhc29uLAor
ICAgIFdlYktpdDo6UHJlY29ubmVjdFJlYXNvbjo6TWFpblJlc291cmNlTG9hZCwKKyAgICBXZWJL
aXQ6OlByZWNvbm5lY3RSZWFzb246OkFQSUhpbnQKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV1RGCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29u
bmVjdFRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFz
ay5jcHAKaW5kZXggY2VhYjNlMzcwOTU5OTgyN2E0YjliZDU1ZDgxYjJmNDM4MjZjZjg3MS4uNDU1
NzgyZDU0YTJlYTliZWUxODY1MGUxYWZkMWNmN2IyY2U5OGM0OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKQEAgLTQxLDEzICs0MSwxMyBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogUHJlY29ubmVjdFRhc2s6OlByZWNvbm5lY3RU
YXNrKE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwgTmV0d29ya0xvYWRQYXJhbWV0ZXJz
JiYgcGFyYW1ldGVycywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZUVycm9y
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKQorICAgICwgbV90aW1lb3V0KDYwX3MpCiAgICAgLCBtX3Rp
bWVvdXRUaW1lcihbdGhpc10geyBkaWRGaW5pc2goUmVzb3VyY2VFcnJvciB7IFN0cmluZygpLCAw
LCBtX25ldHdvcmtMb2FkLT5wYXJhbWV0ZXJzKCkucmVxdWVzdC51cmwoKSwgIlByZWNvbm5lY3Rp
b24gdGltZWQgb3V0Il9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpUaW1lb3V0IH0pOyB9KQogewog
ICAgIFJFTEVBU0VfTE9HKE5ldHdvcmssICIlcCAtIFByZWNvbm5lY3RUYXNrOjpQcmVjb25uZWN0
VGFzaygpIiwgdGhpcyk7CiAKICAgICBBU1NFUlQocGFyYW1ldGVycy5zaG91bGRQcmVjb25uZWN0
T25seSA9PSBQcmVjb25uZWN0T25seTo6WWVzKTsKICAgICBtX25ldHdvcmtMb2FkID0gbWFrZVVu
aXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsIG51bGxwdHIsIFdURk1vdmUocGFyYW1ldGVycyksIG5l
dHdvcmtTZXNzaW9uKTsKLSAgICBtX3RpbWVvdXRUaW1lci5zdGFydE9uZVNob3QoNjAwMDBfcyk7
CiB9CiAKIHZvaWQgUHJlY29ubmVjdFRhc2s6OnNldEgyUGluZ0NhbGxiYWNrKGNvbnN0IFVSTCYg
dXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFdURjo6U2Vjb25kcywgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC01NSw4ICs1NSwx
NCBAQCB2b2lkIFByZWNvbm5lY3RUYXNrOjpzZXRIMlBpbmdDYWxsYmFjayhjb25zdCBVUkwmIHVy
bCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeAogICAgIG1fbmV0d29ya0xvYWQtPnNldEgyUGlu
Z0NhbGxiYWNrKHVybCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCit2b2lkIFBy
ZWNvbm5lY3RUYXNrOjpzZXRUaW1lb3V0KFNlY29uZHMgdGltZW91dCkKK3sKKyAgICBtX3RpbWVv
dXQgPSB0aW1lb3V0OworfQorCiB2b2lkIFByZWNvbm5lY3RUYXNrOjpzdGFydCgpCiB7CisgICAg
bV90aW1lb3V0VGltZXIuc3RhcnRPbmVTaG90KG1fdGltZW91dCk7CiAgICAgbV9uZXR3b3JrTG9h
ZC0+c3RhcnQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9QcmVjb25uZWN0VGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25u
ZWN0VGFzay5oCmluZGV4IDEzNjJiMGM2MDE4YzQ4YTAxN2ZiZDU2NmJkYzM0YzYyYjM2MjU2M2Uu
LjkwN2M0OTIwMWRjZjcyZDIxNjVkMzhmNTNlYjlmNzI1ZjgyNDBlYjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgKQEAgLTI5LDYgKzI5LDcgQEAK
IAogI2luY2x1ZGUgIk5ldHdvcmtMb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1l
ci5oPgorI2luY2x1ZGUgPG9wdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxl
ci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKQEAgLTQ1LDYgKzQ2LDcgQEAgcHVibGlj
OgogICAgIH5QcmVjb25uZWN0VGFzaygpOwogCiAgICAgdm9pZCBzZXRIMlBpbmdDYWxsYmFjayhj
b25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFdURjo6U2Vjb25kcywg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4mJik+JiYpOworICAgIHZvaWQgc2V0VGltZW91dChTZWNv
bmRzKTsKICAgICB2b2lkIHN0YXJ0KCk7CiAKIHByaXZhdGU6CkBAIC02Miw2ICs2NCw3IEBAIHBy
aXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0xvYWQ+IG1fbmV0d29ya0xvYWQ7
CiAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
Jik+IG1fY29tcGxldGlvbkhhbmRsZXI7CisgICAgU2Vjb25kcyBtX3RpbWVvdXQ7CiAgICAgV2Vi
Q29yZTo6VGltZXIgbV90aW1lb3V0VGltZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCAzZjFkNDY0OGI3OTU3NTU0M2NlNzMy
NDEzYWYxMTkyNDBlYjYwZTA4Li5iN2NkYTllMjc0ZGUyY2NkYzNkMGY0M2U4NzQwOTE5MDYwZmU3
MjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0KQEAgLTMyMzksNyArMzIzOSw3IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uU2V0PFdlYktpdDo6
RmluZE9wdGlvbnM+IHRvRmluZE9wdGlvbnMoX1dLRmluZE9wdGlvbnMgd2tGaW5kCiAtICh2b2lk
KV9wcmVjb25uZWN0VG9TZXJ2ZXI6KE5TVVJMICopdXJsCiB7CiAgICAgVEhST1dfSUZfU1VTUEVO
REVEOwotICAgIF9wYWdlLT5wcmVjb25uZWN0VG8odXJsKTsKKyAgICBfcGFnZS0+cHJlY29ubmVj
dFRvKHVybCwgV2ViS2l0OjpQcmVjb25uZWN0UmVhc29uOjpBUElIaW50KTsKIH0KIAogLSAoQk9P
TClfY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDZmN2NhZDE3ZTEx
YWNkYWI0YzY5MWQ0MzQ2Yzc0YmM0MDQzNzg1ZjYuLjYwMTNiYTAxZWYwYjk5ZjJiMDliZGY0ZGI5
ZWFkZjdiNmE1ZTZiOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTUxNSwxMSArMTUxNSwxMSBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmdldExvY2FsU3RvcmFnZURldGFpbHMoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBDb21wbAogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3M6OkdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoc2Vzc2lvbklEKSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OnByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJ
RCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBXZWJDb3JlOjpTdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc3RkOjpvcHRpb25h
bDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
biwgTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0
aWF0ZWQpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnByZWNvbm5lY3RUbyhjb25zdCBVUkwm
IHVybCwgUHJlY29ubmVjdFJlYXNvbiByZWFzb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgd2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgV2ViQ29yZTo6U3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4s
IExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlh
dGVkKQogewogICAgIGlmICghdXJsLmlzVmFsaWQoKSB8fCAhdXJsLnByb3RvY29sSXNJbkhUVFBG
YW1pbHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzOjpQcmVjb25uZWN0VG8oc2Vzc2lvbklELCB3ZWJQYWdlUHJveHlJRCwgd2ViUGFnZUlELCB1
cmwsIHVzZXJBZ2VudCwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4sIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKSwgMCk7CisgICAgc2Vu
ZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlByZWNvbm5lY3RUbyh1cmwsIHJlYXNvbiwgc2Vz
c2lvbklELCB3ZWJQYWdlUHJveHlJRCwgd2ViUGFnZUlELCB1c2VyQWdlbnQsIHN0b3JlZENyZWRl
bnRpYWxzUG9saWN5LCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBsYXN0TmF2aWdhdGlv
bldhc0FwcEluaXRpYXRlZCksIDApOwogfQogCiBzdGF0aWMgYm9vbCBhbnlQcm9jZXNzUG9vbEhh
c0ZvcmVncm91bmRXZWJQcm9jZXNzZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCAzMzA5MzNmZTJjOGRkNGMx
MjQzZDNlYjdlN2U5ZjJmZDZhYTVkZDY5Li5kZjdlMjY1YTBjNzNmMjE0NDZhNWUyMzY3MDUwZTNk
MmYyODI1MDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkF1eGls
aWFyeVByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdl
c1JlcGxpZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgor
I2luY2x1ZGUgIlByZWNvbm5lY3RSZWFzb24uaCIKICNpbmNsdWRlICJQcm9jZXNzTGF1bmNoZXIu
aCIKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90
dGxlckNsaWVudC5oIgpAQCAtMTI5LDcgKzEzMCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0
TG9jYWxTdG9yYWdlRGV0YWlscyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzPiYmKT4m
Jik7CiAKLSAgICB2b2lkIHByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCwgV2ViUGFnZVByb3h5
SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFVSTCYsIGNvbnN0IFN0
cmluZyYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQp
OworICAgIHZvaWQgcHJlY29ubmVjdFRvKGNvbnN0IFVSTCYsIFByZWNvbm5lY3RSZWFzb24sIFBB
TDo6U2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHN0
ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBMYXN0TmF2aWdhdGlvbldh
c0FwcEluaXRpYXRlZCk7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQog
ICAgIHZvaWQgY2xlYXJQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNDFlODI2NmY3MTdkMjRmM2JlNDRi
NWEyZDdmNzQ1YzkzYzFhMWJhOS4uNmVlOTFhZTU4ZWY4MDBlYTM5OGYwMWI1ZTk0Y2QxYzdkNzQx
ZGY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xNDA5
LDcgKzE0MDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlv
blNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogCiAgICAgYWRkUGxhdGZvcm1M
b2FkUGFyYW1ldGVycyhwcm9jZXNzLCBsb2FkUGFyYW1ldGVycyk7CiAKLSAgICBwcmVjb25uZWN0
VG8odXJsKTsKKyAgICBwcmVjb25uZWN0VG8odXJsLCBQcmVjb25uZWN0UmVhc29uOjpNYWluUmVz
b3VyY2VMb2FkKTsKIAogICAgIG5hdmlnYXRpb24uc2V0SXNMb2FkZWRXaXRoTmF2aWdhdGlvblNo
YXJlZCh0cnVlKTsKIApAQCAtNDU4NSwxNCArNDU4NSwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0TmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyhib29sIG5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jl
c3MpCiAgICAgbV9wYWdlTG9hZFN0YXRlLnNldE5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3ModHJh
bnNhY3Rpb24sIG5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MpOwogfQogCi12b2lkIFdlYlBhZ2VQ
cm94eTo6cHJlY29ubmVjdFRvKGNvbnN0IFVSTCYgdXJsKQordm9pZCBXZWJQYWdlUHJveHk6OnBy
ZWNvbm5lY3RUbyhjb25zdCBVUkwmIHVybCwgUHJlY29ubmVjdFJlYXNvbiByZWFzb24pCiB7CiAg
ICAgaWYgKCFtX3dlYnNpdGVEYXRhU3RvcmUtPmNvbmZpZ3VyYXRpb24oKS5hbGxvd3NTZXJ2ZXJQ
cmVjb25uZWN0KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gc3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kgPSBtX2NhblVzZUNyZWRlbnRpYWxTdG9yYWdlID8gV2ViQ29yZTo6U3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3k6OlVzZSA6IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpE
b05vdFVzZTsKIAotICAgIHdlYnNpdGVEYXRhU3RvcmUoKS5uZXR3b3JrUHJvY2VzcygpLnByZWNv
bm5lY3RUbyhzZXNzaW9uSUQoKSwgaWRlbnRpZmllcigpLCB3ZWJQYWdlSUQoKSwgdXJsLCB1c2Vy
QWdlbnQoKSwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4oKSwgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCA/IExhc3ROYXZpZ2F0aW9u
V2FzQXBwSW5pdGlhdGVkOjpZZXMgOiBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDo6Tm8p
OworICAgIHdlYnNpdGVEYXRhU3RvcmUoKS5uZXR3b3JrUHJvY2VzcygpLnByZWNvbm5lY3RUbyh1
cmwsIHJlYXNvbiwgc2Vzc2lvbklEKCksIGlkZW50aWZpZXIoKSwgd2ViUGFnZUlEKCksIHVzZXJB
Z2VudCgpLCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbigpLCBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkID8gTGFzdE5hdmlnYXRpb25X
YXNBcHBJbml0aWF0ZWQ6OlllcyA6IExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpObyk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRDYW5Vc2VDcmVkZW50aWFsU3RvcmFnZShib29s
IGNhblVzZUNyZWRlbnRpYWxTdG9yYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAppbmRleCBmMjRjMDMwNzMxY2E3ZDNhMjM5ODA5NzUzN2YwYzczZDQ0YzFjY2IwLi5kYmQy
ODY4MTk5NDIwOTJmMDkzOWYyZTk2OTMzNWE3NGMxZmZjMTMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgIlBhc3RlYm9h
cmRBY2Nlc3NJbnRlbnQuaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQXR0cmlidXRlcy5oIgog
I2luY2x1ZGUgIlBvbGljeURlY2lzaW9uLmgiCisjaW5jbHVkZSAiUHJlY29ubmVjdFJlYXNvbi5o
IgogI2luY2x1ZGUgIlByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oIgogI2luY2x1ZGUgIlByb2Nl
c3NUaHJvdHRsZXIuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCkBAIC0xODgxLDcg
KzE4ODIsNyBAQCBwdWJsaWM6CiAKICAgICBXZWJQb3B1cE1lbnVQcm94eSogYWN0aXZlUG9wdXBN
ZW51KCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVQb3B1cE1lbnUuZ2V0KCk7IH0KIAotICAgIHZv
aWQgcHJlY29ubmVjdFRvKGNvbnN0IFVSTCYpOworICAgIHZvaWQgcHJlY29ubmVjdFRvKGNvbnN0
IFVSTCYsIFByZWNvbm5lY3RSZWFzb24pOwogCiAgICAgYm9vbCBjYW5Vc2VDcmVkZW50aWFsU3Rv
cmFnZSgpIHsgcmV0dXJuIG1fY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2U7IH0KICAgICB2b2lkIHNl
dENhblVzZUNyZWRlbnRpYWxTdG9yYWdlKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWU0MTZlZjM3NDQ0ZTQyZWJlNjhjMGUx
MDAyNGJjZWNmZmIyN2Y4OC4uMGExMDU4NzliM2JjYTFmYmQxZjkzYjgxYTVkZGMwNmYwYzI5Mjgx
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC02MDA1LDYgKzYwMDUsNyBAQAogCQlFNUJFRjY4MTIxMzBDNDdGMDBGMzExMTEgLyogV2Vi
RGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBuYW1lID0gV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLm1tOyBw
YXRoID0gaW9zL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTVDQjA3REEyMEUxNjc4RjAwMjJDMTgzIC8qIFdLRm9ybUNv
bG9yQ29udHJvbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS0Zvcm1Db2xvckNvbnRyb2wuaDsgcGF0aCA9
IGlvcy9mb3Jtcy9XS0Zvcm1Db2xvckNvbnRyb2wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTVDQjA3REIyMEUxNjc4RjAwMjJDMTgzIC8qIFdLRm9ybUNvbG9yQ29udHJvbC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLRm9ybUNvbG9yQ29udHJvbC5tbTsgcGF0aCA9IGlvcy9m
b3Jtcy9XS0Zvcm1Db2xvckNvbnRyb2wubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUVCOTUxNDcyMjZEREQ3QzYwMDExMzNBQSAvKiBQcmVjb25uZWN0UmVhc29uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByZWNvbm5lY3RSZWFzb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRUNBNjgwRDMxRTY5MDRCNTAwNzMxRDIwIC8qIEV4dHJhUHJpdmF0
ZVN5bWJvbHNGb3JUQVBJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dHJh
UHJpdmF0ZVN5bWJvbHNGb3JUQVBJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVD
QkZDMURCMUU2QTRENjYwMDAzMDBDNyAvKiBFeHRyYVB1YmxpY1N5bWJvbHNGb3JUQVBJLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEV4dHJhUHVibGljU3ltYm9sc0ZvclRBUEkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRjAzNjk3ODcxNUY0QkYwNTAwQzNBODBFIC8qIFdlYkNvbG9yUGlja2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvbG9yUGlja2Vy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg3NTAsNiArODc1MSw3IEBACiAJ
CQkJNTE4MzI0N0EyNjE2ODY3NTAwM0YyMzlFIC8qIE5ldHdvcmtVUkxTY2hlbWVUYXNrLmggKi8s
CiAJCQkJNDYyMTA3RDcxRjM4REJEMzAwREQ3ODEwIC8qIFBpbmdMb2FkLmNwcCAqLywKIAkJCQk1
Q0U4NUIxRjFDODhFNjQzMDA3MEJGQ0UgLyogUGluZ0xvYWQuaCAqLywKKwkJCQlFQjk1MTQ3MjI2
REREN0M2MDAxMTMzQUEgLyogUHJlY29ubmVjdFJlYXNvbi5oICovLAogCQkJCTgzQTBFRDMzMUY3
NDdDQzcwMDMyOTlFQiAvKiBQcmVjb25uZWN0VGFzay5jcHAgKi8sCiAJCQkJODNBMEVEMzIxRjc0
N0NDNjAwMzI5OUVCIC8qIFByZWNvbm5lY3RUYXNrLmggKi8sCiAJCQkJNkJEMDU4NjQyMjBDRThD
MjAwMEJFRDVDIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437527</attachid>
            <date>2021-09-07 10:30:55 -0700</date>
            <delta_ts>2021-09-08 09:13:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229686-20210907103054.patch</filename>
            <type>text/plain</type>
            <size>30865</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDYxZjdhZDFjYTg4N2Q1YmZk
MjEyZjQzOTNkMGM1MmFlYWFjMGI1N2IuLjBiZDVkODI4MWY1YTljYjUwZWYxZGEwZTgyMTFlNmM1
MjUwNWQwZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMjEtMDgtMzAgIEJlbiBOaGFt
ICA8bmhhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUHJlY29ubmVjdGVkIHNvY2tldCBpcyBzb21l
dGltZXMgbm90IHVzZWQgZm9yIGluaXRpYWwgcmVxdWVzdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5Njg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gdGhlIHByZXZpb3VzIHJlbGVhc2UsIHdlIHBy
ZWNvbm5lY3RlZCB0byB0aGUgbWFpbiByZXNvdXJjZSBvcmlnaW4gZWFybHkgaW4gcGFnZSBsb2Fk
IGZyb20KKyAgICAgICAgVUlQcm9jZXNzIHRvIHNhdmUgfjEwLTE1IG1zIHBlciBwYWdlIGxvYWQg
KGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQ5OTIpLgorICAgICAg
ICBUaGUgc2F2aW5ncyBjb21lcyBmcm9tIHRoZSBmYWN0IHRoYXQgdGhlcmUncyBzb21lIGxhdGVu
Y3kgaW4gaW5pdGlhdGluZyB0aGUgcmVxdWVzdCBpbgorICAgICAgICBXZWJQcm9jZXNzIGFuZCB3
YWl0aW5nIGZvciB0aGUgbmF2IGRlbGVnYXRlIHJlcGx5IGluIFVJUHJvY2Vzcy4gV2UgaGlkZSB0
aGF0IGxhdGVuY3kgYnkKKyAgICAgICAgaGF2aW5nIHRoZSBldmVudHVhbCBtYWluIHJlc291cmNl
IHJlcXVlc3QgcmV1c2UgdGhlIGVhcmx5IHByZWNvbm5lY3RlZCBzb2NrZXQuCisKKyAgICAgICAg
SG93ZXZlciwgdGhpcyBvcHRpbWl6YXRpb24gZG9lc24ndCB3b3JrIGZvciBjb25uZWN0aW9ucyB0
byBrbm93biBIVFRQLzEuMSBvcmlnaW5zIGR1ZSB0bworICAgICAgICBDRk5ldHdvcmsncyBpbi1t
ZW1vcnkgY2FjaGUgb2Yga25vd24gSFRUUC8xLjEgb3JpZ2lucy4gSWYgYW4gb3JpZ2luIGlzIGlu
IHRoaXMgY2FjaGUsIGFuZAorICAgICAgICBhIHByZWNvbm5lY3QgaXMgc3RpbGwgaW4gZmxpZ2h0
LCB0aGVuIHRoZSBuZXR3b3JrIHN0YWNrIHdpbGwgZ28gd2lkZSBpbW1lZGlhdGVseSBhbmQgaXNz
dWUKKyAgICAgICAgdGhlIG1haW4gcmVzb3VyY2UgcmVxdWVzdCBvbiBhIG5ldyBzb2NrZXQgcmF0
aGVyIHRoYW4gdHJ5aW5nIHRvIHdhaXQgZm9yIHRoZSBwcmVjb25uZWN0IHRvCisgICAgICAgIGZp
bmlzaCBhbmQgcmV1c2UgdGhlIHByZWNvbm5lY3RlZCBzb2NrZXQuIFRodXMgdGhlIHByZWNvbm5l
dGVkIHNvY2tldCBqdXN0IGdvZXMgdG8gd2FzdGUuCisgICAgICAgIFRoaXMgY2FuIGFsc28gY2F1
c2UgaXNzdWVzIHdpdGggc2luZ2xlLXRocmVhZGVkIHdlYiBzZXJ2ZXJzIHRoYXQgc2VydmUgb25s
eSBvbmUgcmVxdWVzdCBhdAorICAgICAgICBhIHRpbWUsIGFzIHRoZSBtYWluIHJlc291cmNlIHJl
cXVlc3QgY2FuIGdldCBoZWFkLW9mLWxpbmUgYmxvY2tlZCBieSB0aGUgcHJlY29ubmVjdCB0aGF0
CisgICAgICAgIGlzIHdhc3RlZC4KKworICAgICAgICBUbyB3b3JrIGFyb3VuZCB0aGlzLCB0aGlz
IHBhdGNoIHRyYWNrcyBhIHNtYWxsIG51bWJlciBvZiBrbm93biBIVFRQLzEuMSBvcmlnaW5zIGlu
IG1lbW9yeS4KKyAgICAgICAgSWYgdGhlcmUgaXMgYSBwZW5kaW5nIHByZWNvbm5lY3QgdG8gYW4g
SFRUUC8xLjEgb3JpZ2luIGFuZCBhIG1haW4gcmVzb3VyY2UgcmVxdWVzdCB0byB0aGF0CisgICAg
ICAgIG9yaWdpbiBjb21lcyBpbiwgdGhlbiB3ZSBibG9jayB0aGUgcmVxdWVzdCBmcm9tIGdvaW5n
IG91dCB1bnRpbCB0aGUgcHJlY29ubmVjdCBmaW5pc2hlcy4KKyAgICAgICAgVGhpcyBhbGxvd3Mg
dGhlIG1haW4gcmVzb3VyY2UgcmVxdWVzdCB0byB1dGlsaXplIHRoZSBwcmVjb25uZWN0ZWQgc29j
a2V0LgorCisgICAgICAgIFRoaXMgaXMgd29ydGggfjEuMjUlLTIuNSUgb24gUExUNSBkZXBlbmRp
bmcgb24gZGV2aWNlLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkQ29tcGxldGVXaXRoRXJyb3IpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkU2NoZWR1bGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0xvYWRTY2hlZHVsZXI6OnNjaGVkdWxlKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0xvYWRTY2hlZHVsZXI6OnVuc2NoZWR1bGUpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVMb2FkKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0xvYWRTY2hlZHVsZXI6OnVuc2NoZWR1bGVMb2FkKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0xvYWRTY2hlZHVsZXI6OnNjaGVkdWxlTWFpblJlc291cmNlTG9hZCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtMb2FkU2NoZWR1bGVyOjp1bnNjaGVkdWxlTWFpblJlc291cmNlTG9h
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkU2NoZWR1bGVyOjpzdGFydGVkUHJlY29u
bmVjdEZvck1haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkU2NoZWR1
bGVyOjpmaW5pc2hlZFByZWNvbm5lY3RGb3JNYWluUmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrTG9hZFNjaGVkdWxlcjo6aXNPcmlnaW5IVFRQMVgpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrTG9hZFNjaGVkdWxlcjo6dXBkYXRlT3JpZ2luUHJvdG9jb2xJbmZvKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFNjaGVkdWxlci5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnByZWNvbm5lY3RUbyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNz
YWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0UmVhc29uLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dL
V2ViVmlldyBfcHJlY29ubmVjdFRvU2VydmVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpwcmVjb25uZWN0VG8pOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0
aW9uU2hhcmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwcmVjb25uZWN0VG8p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMS0wOC0yNiAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ3V0IGRvd24gb24gdXNlIG9mIENGR2V0VHlwZUlE
LCB1c2luZyBkeW5hbWljX2NmX2Nhc3QgaW5zdGVhZDsgcmVsYXRlZCBzdHJlYW1saW5pbmcKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKaW5kZXggM2U3MzEx
MTcxYTk0MGI0NDkzZWQ0NmExZmVkMDZiNjZmYzBiNjFkMC4uMmFhMDM3NzJmYTU5YjhiM2U4MjQ2
Njc4MGEzNWJmZTY0YjEyMGRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZC5jcHAKQEAgLTI0NSw3ICsyNDUsNyBAQCB2b2lkIE5ldHdvcmtMb2FkOjpkaWRS
ZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHZvaWQgTmV0d29ya0xvYWQ6
OmRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKIHsKICAgICBp
ZiAobV9zY2hlZHVsZXIpIHsKLSAgICAgICAgbV9zY2hlZHVsZXItPnVuc2NoZWR1bGUoKnRoaXMp
OworICAgICAgICBtX3NjaGVkdWxlci0+dW5zY2hlZHVsZSgqdGhpcywgJm5ldHdvcmtMb2FkTWV0
cmljcyk7CiAgICAgICAgIG1fc2NoZWR1bGVyID0gbnVsbHB0cjsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRTY2hlZHVsZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFNjaGVkdWxlci5jcHAK
aW5kZXggMWU0ODBmNTRhMmFlNjk3MzFlNzUzNjM3YmYwOGQzMDE0MjNjNzJlZi4uMjdiZmM4YTU4
MWQ3MTBmZDRhZmRjZTZjMGEyZjY3N2M5MDZmZjkxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFNjaGVkdWxlci5jcHAKQEAgLTI2LDEyICsy
NiwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtMb2FkU2NoZWR1
bGVyLmgiCiAKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWQuaCIK
LSNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0
YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1heGltdW1BY3RpdmVDb3VudEZvckxvd1ByaW9yaXR5ID0g
MjsKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1heGltdW1UcmFja2VkSFRUUDFYT3JpZ2lucyA9
IDEyODsKIAogY2xhc3MgTmV0d29ya0xvYWRTY2hlZHVsZXI6Okhvc3RDb250ZXh0IHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTExNiw2ICsxMTcsMjQgQEAgTmV0d29ya0xvYWRT
Y2hlZHVsZXI6Ok5ldHdvcmtMb2FkU2NoZWR1bGVyKCkgPSBkZWZhdWx0OwogTmV0d29ya0xvYWRT
Y2hlZHVsZXI6On5OZXR3b3JrTG9hZFNjaGVkdWxlcigpID0gZGVmYXVsdDsKIAogdm9pZCBOZXR3
b3JrTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGUoTmV0d29ya0xvYWQmIGxvYWQpCit7CisgICAgYm9v
bCBpc01haW5GcmFtZU1haW5SZXNvdXJjZSA9IGxvYWQuY3VycmVudFJlcXVlc3QoKS5pc1RvcFNp
dGUoKTsKKyAgICBpZiAoaXNNYWluRnJhbWVNYWluUmVzb3VyY2UpCisgICAgICAgIHNjaGVkdWxl
TWFpblJlc291cmNlTG9hZChsb2FkKTsKKyAgICBlbHNlCisgICAgICAgIHNjaGVkdWxlTG9hZChs
b2FkKTsKK30KKwordm9pZCBOZXR3b3JrTG9hZFNjaGVkdWxlcjo6dW5zY2hlZHVsZShOZXR3b3Jr
TG9hZCYgbG9hZCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzKiBtZXRyaWNzKQor
eworICAgIGJvb2wgaXNNYWluRnJhbWVNYWluUmVzb3VyY2UgPSBsb2FkLmN1cnJlbnRSZXF1ZXN0
KCkuaXNUb3BTaXRlKCk7CisgICAgaWYgKGlzTWFpbkZyYW1lTWFpblJlc291cmNlKQorICAgICAg
ICB1bnNjaGVkdWxlTWFpblJlc291cmNlTG9hZChsb2FkLCBtZXRyaWNzKTsKKyAgICBlbHNlCisg
ICAgICAgIHVuc2NoZWR1bGVMb2FkKGxvYWQpOworfQorCit2b2lkIE5ldHdvcmtMb2FkU2NoZWR1
bGVyOjpzY2hlZHVsZUxvYWQoTmV0d29ya0xvYWQmIGxvYWQpCiB7CiAgICAgYXV0byogY29udGV4
dCA9IGNvbnRleHRGb3JMb2FkKGxvYWQpOwogCkBAIC0xMjcsMTIgKzE0NiwxMDkgQEAgdm9pZCBO
ZXR3b3JrTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGUoTmV0d29ya0xvYWQmIGxvYWQpCiAgICAgY29u
dGV4dC0+c2NoZWR1bGUobG9hZCk7CiB9CiAKLXZvaWQgTmV0d29ya0xvYWRTY2hlZHVsZXI6OnVu
c2NoZWR1bGUoTmV0d29ya0xvYWQmIGxvYWQpCit2b2lkIE5ldHdvcmtMb2FkU2NoZWR1bGVyOjp1
bnNjaGVkdWxlTG9hZChOZXR3b3JrTG9hZCYgbG9hZCkKIHsKICAgICBpZiAoYXV0byogY29udGV4
dCA9IGNvbnRleHRGb3JMb2FkKGxvYWQpKQogICAgICAgICBjb250ZXh0LT51bnNjaGVkdWxlKGxv
YWQpOwogfQogCit2b2lkIE5ldHdvcmtMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZU1haW5SZXNvdXJj
ZUxvYWQoTmV0d29ya0xvYWQmIGxvYWQpCit7CisgICAgU3RyaW5nIHByb3RvY29sSG9zdEFuZFBv
cnQgPSBsb2FkLnVybCgpLnByb3RvY29sSG9zdEFuZFBvcnQoKTsKKyAgICBpZiAoIWlzT3JpZ2lu
SFRUUDFYKHByb3RvY29sSG9zdEFuZFBvcnQpKSB7CisgICAgICAgIGxvYWQuc3RhcnQoKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gaXRlciA9IG1fcGVuZGluZ01haW5SZXNv
dXJjZVByZWNvbm5lY3RzLmZpbmQocHJvdG9jb2xIb3N0QW5kUG9ydCk7CisgICAgaWYgKGl0ZXIg
PT0gbV9wZW5kaW5nTWFpblJlc291cmNlUHJlY29ubmVjdHMuZW5kKCkpIHsKKyAgICAgICAgbG9h
ZC5zdGFydCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUGVuZGluZ01haW5SZXNv
dXJjZVByZWNvbm5lY3RJbmZvJiBpbmZvID0gaXRlci0+dmFsdWU7CisgICAgaWYgKCFpbmZvLnBl
bmRpbmdQcmVjb25uZWN0cykgeworICAgICAgICBsb2FkLnN0YXJ0KCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICAtLWluZm8ucGVuZGluZ1ByZWNvbm5lY3RzOworICAgIGluZm8ucGVu
ZGluZ0xvYWRzLmFkZCgmbG9hZCk7CisgICAgUkVMRUFTRV9MT0coTmV0d29yaywgIiVwIC0gTmV0
d29ya0xvYWRTY2hlZHVsZXI6OnNjaGVkdWxlTWFpblJlc291cmNlTG9hZCBkZWZlcnJpbmcgbG9h
ZCAlcDsgJXUgcGVuZGluZyBwcmVjb25uZWN0czsgJXUgcGVuZGluZyBsb2FkcyIsIHRoaXMsICZs
b2FkLCBpbmZvLnBlbmRpbmdQcmVjb25uZWN0cywgaW5mby5wZW5kaW5nTG9hZHMuc2l6ZSgpKTsK
K30KKwordm9pZCBOZXR3b3JrTG9hZFNjaGVkdWxlcjo6dW5zY2hlZHVsZU1haW5SZXNvdXJjZUxv
YWQoTmV0d29ya0xvYWQmIGxvYWQsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyog
bWV0cmljcykKK3sKKyAgICBTdHJpbmcgcHJvdG9jb2xIb3N0QW5kUG9ydCA9IGxvYWQudXJsKCku
cHJvdG9jb2xIb3N0QW5kUG9ydCgpOworCisgICAgaWYgKG1ldHJpY3MpCisgICAgICAgIHVwZGF0
ZU9yaWdpblByb3RvY29sSW5mbyhwcm90b2NvbEhvc3RBbmRQb3J0LCBtZXRyaWNzLT5wcm90b2Nv
bCk7CisKKyAgICBhdXRvIGl0ZXIgPSBtX3BlbmRpbmdNYWluUmVzb3VyY2VQcmVjb25uZWN0cy5m
aW5kKHByb3RvY29sSG9zdEFuZFBvcnQpOworICAgIGlmIChpdGVyID09IG1fcGVuZGluZ01haW5S
ZXNvdXJjZVByZWNvbm5lY3RzLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBQZW5kaW5n
TWFpblJlc291cmNlUHJlY29ubmVjdEluZm8mIGluZm8gPSBpdGVyLT52YWx1ZTsKKyAgICBpZiAo
aW5mby5wZW5kaW5nTG9hZHMucmVtb3ZlKCZsb2FkKSkKKyAgICAgICAgbWF5YmVQcnVuZVByZWNv
bm5lY3RJbmZvKGl0ZXIpOworfQorCit2b2lkIE5ldHdvcmtMb2FkU2NoZWR1bGVyOjpzdGFydGVk
UHJlY29ubmVjdEZvck1haW5SZXNvdXJjZShjb25zdCBVUkwmIHVybCkKK3sKKyAgICBhdXRvIGl0
ZXIgPSBtX3BlbmRpbmdNYWluUmVzb3VyY2VQcmVjb25uZWN0cy5maW5kKHVybC5wcm90b2NvbEhv
c3RBbmRQb3J0KCkpOworICAgIGlmIChpdGVyICE9IG1fcGVuZGluZ01haW5SZXNvdXJjZVByZWNv
bm5lY3RzLmVuZCgpKSB7CisgICAgICAgIFBlbmRpbmdNYWluUmVzb3VyY2VQcmVjb25uZWN0SW5m
byYgaW5mbyA9IGl0ZXItPnZhbHVlOworICAgICAgICBpbmZvLnBlbmRpbmdQcmVjb25uZWN0cysr
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUGVuZGluZ01haW5SZXNvdXJjZVByZWNv
bm5lY3RJbmZvIGluZm87CisgICAgbV9wZW5kaW5nTWFpblJlc291cmNlUHJlY29ubmVjdHMuYWRk
KHVybC5wcm90b2NvbEhvc3RBbmRQb3J0KCksIFdURk1vdmUoaW5mbykpOworfQorCit2b2lkIE5l
dHdvcmtMb2FkU2NoZWR1bGVyOjpmaW5pc2hlZFByZWNvbm5lY3RGb3JNYWluUmVzb3VyY2UoY29u
c3QgVVJMJiB1cmwpCit7CisgICAgYXV0byBpdGVyID0gbV9wZW5kaW5nTWFpblJlc291cmNlUHJl
Y29ubmVjdHMuZmluZCh1cmwucHJvdG9jb2xIb3N0QW5kUG9ydCgpKTsKKyAgICBpZiAoaXRlciA9
PSBtX3BlbmRpbmdNYWluUmVzb3VyY2VQcmVjb25uZWN0cy5lbmQoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgUGVuZGluZ01haW5SZXNvdXJjZVByZWNvbm5lY3RJbmZvJiBpbmZvID0gaXRlci0+
dmFsdWU7CisgICAgaWYgKCFpbmZvLnBlbmRpbmdMb2Fkcy5pc0VtcHR5KCkpIHsKKyAgICAgICAg
TmV0d29ya0xvYWQqIGxvYWQgPSBpbmZvLnBlbmRpbmdMb2Fkcy50YWtlRmlyc3QoKTsKKyAgICAg
ICAgUkVMRUFTRV9MT0coTmV0d29yaywgIiVwIC0gTmV0d29ya0xvYWRTY2hlZHVsZXI6OmZpbmlz
aGVkUHJlY29ubmVjdEZvck1haW5SZXNvdXJjZSBzdGFydGluZyBkZWxheWVkIG1haW4gcmVzb3Vy
Y2UgbG9hZCAlcDsgJXUgcGVuZGluZyBwcmVjb25uZWN0czsgJXUgdG90YWwgcGVuZGluZyBsb2Fk
cyIsIHRoaXMsIGxvYWQsIGluZm8ucGVuZGluZ1ByZWNvbm5lY3RzLCBpbmZvLnBlbmRpbmdMb2Fk
cy5zaXplKCkpOworICAgICAgICBsb2FkLT5zdGFydCgpOworICAgIH0gZWxzZQorICAgICAgICAt
LWluZm8ucGVuZGluZ1ByZWNvbm5lY3RzOworCisgICAgbWF5YmVQcnVuZVByZWNvbm5lY3RJbmZv
KGl0ZXIpOworfQorCit2b2lkIE5ldHdvcmtMb2FkU2NoZWR1bGVyOjptYXliZVBydW5lUHJlY29u
bmVjdEluZm8oUGVuZGluZ1ByZWNvbm5lY3RNYXA6Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIFBl
bmRpbmdNYWluUmVzb3VyY2VQcmVjb25uZWN0SW5mbyYgaW5mbyA9IGl0ZXItPnZhbHVlOworICAg
IGlmICghaW5mby5wZW5kaW5nUHJlY29ubmVjdHMgJiYgaW5mby5wZW5kaW5nTG9hZHMuaXNFbXB0
eSgpKQorICAgICAgICBtX3BlbmRpbmdNYWluUmVzb3VyY2VQcmVjb25uZWN0cy5yZW1vdmUoaXRl
cik7Cit9CisKKworYm9vbCBOZXR3b3JrTG9hZFNjaGVkdWxlcjo6aXNPcmlnaW5IVFRQMVgoY29u
c3QgU3RyaW5nJiBwcm90b2NvbEhvc3RBbmRQb3J0KQoreworICAgIHJldHVybiBtX2h0dHAxWE9y
aWdpbnMuY29udGFpbnMocHJvdG9jb2xIb3N0QW5kUG9ydCk7Cit9CisKK3ZvaWQgTmV0d29ya0xv
YWRTY2hlZHVsZXI6OnVwZGF0ZU9yaWdpblByb3RvY29sSW5mbyhjb25zdCBTdHJpbmcmIHByb3Rv
Y29sSG9zdEFuZFBvcnQsIGNvbnN0IFN0cmluZyYgYWxwblByb3RvY29sSUQpCit7CisgICAgaWYg
KGFscG5Qcm90b2NvbElEICE9ICJodHRwLzEuMSJfcykgeworICAgICAgICBtX2h0dHAxWE9yaWdp
bnMucmVtb3ZlKHByb3RvY29sSG9zdEFuZFBvcnQpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKG1faHR0cDFYT3JpZ2lucy5zaXplKCkgPj0gbWF4aW11bVRyYWNrZWRIVFRQMVhP
cmlnaW5zKQorICAgICAgICBtX2h0dHAxWE9yaWdpbnMucmVtb3ZlKG1faHR0cDFYT3JpZ2lucy5y
YW5kb20oKSk7CisKKyAgICBtX2h0dHAxWE9yaWdpbnMuYWRkKHByb3RvY29sSG9zdEFuZFBvcnQp
OworfQorCiB2b2lkIE5ldHdvcmtMb2FkU2NoZWR1bGVyOjpzZXRSZXNvdXJjZUxvYWRTY2hlZHVs
aW5nTW9kZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6
TG9hZFNjaGVkdWxpbmdNb2RlIG1vZGUpCiB7CiAgICAgc3dpdGNoIChtb2RlKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkU2NoZWR1bGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkU2NoZWR1bGVyLmgKaW5k
ZXggMjk5YzgxYWMzMjg5Zjg5Zjc1NGE2YzZkMTkzMzE5NzhjMmIyNjc5Mi4uMGM3NGI3MDYwY2Mw
OGE5MDM3ZWFiNDNhNmNhOTZiMWI3MjM4YWJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFNjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRTY2hlZHVsZXIuaApAQCAtMjYsOCArMjYsMTEgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8V2ViQ29yZS9Mb2FkU2NoZWR1bGluZ01vZGUuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtMb2FkTWV0cmljcy5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8
d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00MSwxOCArNDQsNDEgQEAg
cHVibGljOgogICAgIH5OZXR3b3JrTG9hZFNjaGVkdWxlcigpOwogCiAgICAgdm9pZCBzY2hlZHVs
ZShOZXR3b3JrTG9hZCYpOwotICAgIHZvaWQgdW5zY2hlZHVsZShOZXR3b3JrTG9hZCYpOworICAg
IHZvaWQgdW5zY2hlZHVsZShOZXR3b3JrTG9hZCYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2Fk
TWV0cmljcyogPSBudWxscHRyKTsKKworICAgIHZvaWQgc3RhcnRlZFByZWNvbm5lY3RGb3JNYWlu
UmVzb3VyY2UoY29uc3QgVVJMJik7CisgICAgdm9pZCBmaW5pc2hlZFByZWNvbm5lY3RGb3JNYWlu
UmVzb3VyY2UoY29uc3QgVVJMJik7CiAKICAgICB2b2lkIHNldFJlc291cmNlTG9hZFNjaGVkdWxp
bmdNb2RlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpMb2FkU2NoZWR1bGluZ01v
ZGUpOwogICAgIHZvaWQgcHJpb3JpdGl6ZUxvYWRzKGNvbnN0IFZlY3RvcjxOZXR3b3JrTG9hZCo+
Jik7CiAgICAgdm9pZCBjbGVhclBhZ2VEYXRhKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKIAog
cHJpdmF0ZToKKyAgICB2b2lkIHNjaGVkdWxlTG9hZChOZXR3b3JrTG9hZCYpOworICAgIHZvaWQg
dW5zY2hlZHVsZUxvYWQoTmV0d29ya0xvYWQmKTsKKworICAgIHZvaWQgc2NoZWR1bGVNYWluUmVz
b3VyY2VMb2FkKE5ldHdvcmtMb2FkJik7CisgICAgdm9pZCB1bnNjaGVkdWxlTWFpblJlc291cmNl
TG9hZChOZXR3b3JrTG9hZCYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyopOwor
CisgICAgYm9vbCBpc09yaWdpbkhUVFAxWChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHVwZGF0
ZU9yaWdpblByb3RvY29sSW5mbyhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKKwogICAg
IGNsYXNzIEhvc3RDb250ZXh0OwogICAgIEhvc3RDb250ZXh0KiBjb250ZXh0Rm9yTG9hZChjb25z
dCBOZXR3b3JrTG9hZCYpOwogCiAgICAgdXNpbmcgUGFnZUNvbnRleHQgPSBIYXNoTWFwPFN0cmlu
Zywgc3RkOjp1bmlxdWVfcHRyPEhvc3RDb250ZXh0Pj47CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFBhZ2VDb250ZXh0Pj4gbV9wYWdlQ29udGV4
dHM7CisKKyAgICBzdHJ1Y3QgUGVuZGluZ01haW5SZXNvdXJjZVByZWNvbm5lY3RJbmZvIHsKKyAg
ICAgICAgdW5zaWduZWQgcGVuZGluZ1ByZWNvbm5lY3RzIHsxfTsKKyAgICAgICAgTGlzdEhhc2hT
ZXQ8TmV0d29ya0xvYWQgKj4gcGVuZGluZ0xvYWRzOworICAgIH07CisgICAgdXNpbmcgUGVuZGlu
Z1ByZWNvbm5lY3RNYXAgPSBIYXNoTWFwPFN0cmluZywgUGVuZGluZ01haW5SZXNvdXJjZVByZWNv
bm5lY3RJbmZvPjsKKyAgICBQZW5kaW5nUHJlY29ubmVjdE1hcCBtX3BlbmRpbmdNYWluUmVzb3Vy
Y2VQcmVjb25uZWN0czsKKworICAgIHZvaWQgbWF5YmVQcnVuZVByZWNvbm5lY3RJbmZvKFBlbmRp
bmdQcmVjb25uZWN0TWFwOjppdGVyYXRvciYpOworCisgICAgSGFzaFNldDxTdHJpbmc+IG1faHR0
cDFYT3JpZ2luczsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggNzQ2YmRjNmVmYTk4OTJkNjU4YThhOGIxZjdlYzBiNmQz
ZTNhNmM2ZS4uODIzYzZjZjk3YjhiZTI3ZTYzZDM5YWJlNjdlYTEzNTc5Yzg5MjY2OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTEz
NjQsNyArMTM2NCw3IEBAIGJvb2wgTmV0d29ya1Byb2Nlc3M6OnByaXZhdGVDbGlja01lYXN1cmVt
ZW50RGVidWdNb2RlRW5hYmxlZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnREZWJ1Z01vZGVFbmFibGVkOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVj
b25uZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVy
IHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8TmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIExhc3RO
YXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKQor
dm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlY29ubmVjdFRvKGNvbnN0IFVSTCYgdXJsLCBQcmVjb25u
ZWN0UmVhc29uIHJlYXNvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdl
SUQsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1Bv
bGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgTGFzdE5hdmlnYXRp
b25XYXNBcHBJbml0aWF0ZWQgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpCiB7CiAgICAg
TE9HKE5ldHdvcmssICIoTmV0d29ya1Byb2Nlc3MpIFByZWNvbm5lY3RpbmcgdG8gVVJMICVzIChz
dG9yZWRDcmVkZW50aWFsc1BvbGljeSAlaSkiLCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwg
KGludClzdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CiAKQEAgLTEzOTMsNyArMTM5MywxNyBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBXZWJQYWdlUHJveHlJZGVudGlmaQogICAgIHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3kgPSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeTsKICAgICBwYXJhbWV0ZXJzLnNob3VsZFBy
ZWNvbm5lY3RPbmx5ID0gUHJlY29ubmVjdE9ubHk6OlllczsKIAotICAgIChuZXcgUHJlY29ubmVj
dFRhc2soKm5ldHdvcmtTZXNzaW9uLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbXShjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJikgeyB9KSktPnN0YXJ0KCk7CisgICAgaWYgKHJlYXNvbiA9PSBQ
cmVjb25uZWN0UmVhc29uOjpNYWluUmVzb3VyY2VMb2FkKSB7CisgICAgICAgIHBhcmFtZXRlcnMu
cmVxdWVzdC5zZXRQcmlvcml0eShXZWJDb3JlOjpSZXNvdXJjZUxvYWRQcmlvcml0eTo6VmVyeUhp
Z2gpOworICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+bmV0d29ya0xvYWRTY2hlZHVsZXIoKS5zdGFy
dGVkUHJlY29ubmVjdEZvck1haW5SZXNvdXJjZSh1cmwpOworICAgIH0KKworICAgIGF1dG8gdGFz
ayA9IG5ldyBQcmVjb25uZWN0VGFzaygqbmV0d29ya1Nlc3Npb24sIFdURk1vdmUocGFyYW1ldGVy
cyksIFtyZWFzb24sIG5ldHdvcmtTZXNzaW9uLCB1cmxdKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKSB7CisgICAgICAgIGlmIChyZWFzb24gPT0gUHJlY29ubmVjdFJlYXNvbjo6TWFpblJl
c291cmNlTG9hZCkKKyAgICAgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5uZXR3b3JrTG9hZFNjaGVk
dWxlcigpLmZpbmlzaGVkUHJlY29ubmVjdEZvck1haW5SZXNvdXJjZSh1cmwpOworICAgIH0pOwor
ICAgIHRhc2stPnNldFRpbWVvdXQoMV9zKTsKKyAgICB0YXNrLT5zdGFydCgpOwogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0odXJsKTsKICAgICBVTlVTRURfUEFSQU0odXNlckFnZW50KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCBlMTZmNmRk
NDg5NmNkNGNkOTdiNzAzYjNkYTU3YTU1MjI4MDk4NDIyLi5kMzYyMjg2MTEzYWNlMGNmMmIyMGIw
NjQ5MmUyNWZkZjgwMzYyOWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyLmgiCiAjaW5jbHVkZSAiTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFn
ZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgorI2luY2x1
ZGUgIlByZWNvbm5lY3RSZWFzb24uaCIKICNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbFJlbW90ZU1h
bmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJX
ZWJJREJTZXJ2ZXIuaCIKQEAgLTI5MSw3ICsyOTIsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQ2Fj
aGVTdG9yYWdlUm9vdFBhdGhDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5n
JiYpPjsKICAgICB2b2lkIGNhY2hlU3RvcmFnZVJvb3RQYXRoKFBBTDo6U2Vzc2lvbklELCBDYWNo
ZVN0b3JhZ2VSb290UGF0aENhbGxiYWNrJiYpOwogCi0gICAgdm9pZCBwcmVjb25uZWN0VG8oUEFM
OjpTZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFs
c1BvbGljeSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIExhc3RO
YXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKTsKKyAgICB2b2lkIHByZWNvbm5lY3RUbyhjb25zdCBV
UkwmLCBQcmVjb25uZWN0UmVhc29uLCBQQUw6OlNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRp
ZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OlN0
b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluPiwgTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpOwogCiAgICAgdm9pZCBzZXRT
ZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKFBBTDo6U2Vzc2lvbklELCBib29sKTsKICAg
ICBib29sIHNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oUEFMOjpTZXNzaW9uSUQpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggY2FlYjhkOWJiODQ4YzY5MDBhZTk1NTVkMDc1OWY5MmQ1
OWJmMjQ5Mi4uMDg1MDcxYzgyZWFjYzkxNGJkYTE4Y2IwNWY2Zjc2YWVjYTI5ODNlMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1l
c3NhZ2VzLmluCkBAIC03NCw3ICs3NCw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExl
Z2FjeVJlY2VpdmVyIHsKICAgICBQcmVwYXJlVG9TdXNwZW5kKGJvb2wgaXNTdXNwZW5zaW9uSW1t
aW5lbnQpIC0+ICgpIEFzeW5jCiAgICAgUHJvY2Vzc0RpZFJlc3VtZSgpCiAKLSAgICBQcmVjb25u
ZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50
aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwg
VVJMIHVybCwgU3RyaW5nIHVzZXJBZ2VudCwgZW51bTp1aW50OF90IFdlYkNvcmU6OlN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBlbnVtOmJvb2wgc3RkOjpv
cHRpb25hbDxXZWJLaXQ6Ok5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluLCBlbnVtOmJvb2wgV2ViS2l0OjpMYXN0TmF2aWdhdGlvbldhc0FwcElu
aXRpYXRlZCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk7CisgICAgUHJlY29ubmVjdFRv
KFVSTCB1cmwsIGVudW06dWludDhfdCBXZWJLaXQ6OlByZWNvbm5lY3RSZWFzb24gcmVhc29uLCBQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3
ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBTdHJpbmcg
dXNlckFnZW50LCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kg
c3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGVudW06Ym9vbCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4s
IGVudW06Ym9vbCBXZWJLaXQ6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIGxhc3ROYXZp
Z2F0aW9uV2FzQXBwSW5pdGlhdGVkKTsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCiAgICAgQ2xlYXJQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNlRG9tYWluKSAtPiAoKSBBc3lu
YwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0UmVh
c29uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RSZWFzb24uaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41MDVmZjQ1MWY1MTg5MTNjN2MwNTgwMzJhZjk4ZDM2NDNhMDMyNDAwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0UmVh
c29uLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2VudW0gY2xhc3MgUHJlY29ubmVjdFJlYXNvbiA6IHVpbnQ4X3QgeworICAg
IE1haW5SZXNvdXJjZUxvYWQsCisgICAgQVBJSGludAorfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdl
YktpdDo6UHJlY29ubmVjdFJlYXNvbj4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8
CisgICAgV2ViS2l0OjpQcmVjb25uZWN0UmVhc29uLAorICAgIFdlYktpdDo6UHJlY29ubmVjdFJl
YXNvbjo6TWFpblJlc291cmNlTG9hZCwKKyAgICBXZWJLaXQ6OlByZWNvbm5lY3RSZWFzb246OkFQ
SUhpbnQKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKaW5kZXggY2VhYjNlMzcwOTU5
OTgyN2E0YjliZDU1ZDgxYjJmNDM4MjZjZjg3MS4uNDU1NzgyZDU0YTJlYTliZWUxODY1MGUxYWZk
MWNmN2IyY2U5OGM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
cmVjb25uZWN0VGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVj
b25uZWN0VGFzay5jcHAKQEAgLTQxLDEzICs0MSwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogUHJlY29ubmVjdFRhc2s6OlByZWNvbm5lY3RUYXNrKE5ldHdvcmtTZXNzaW9uJiBuZXR3
b3JrU2Vzc2lvbiwgTmV0d29ya0xvYWRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZUVycm9yJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiAgICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQor
ICAgICwgbV90aW1lb3V0KDYwX3MpCiAgICAgLCBtX3RpbWVvdXRUaW1lcihbdGhpc10geyBkaWRG
aW5pc2goUmVzb3VyY2VFcnJvciB7IFN0cmluZygpLCAwLCBtX25ldHdvcmtMb2FkLT5wYXJhbWV0
ZXJzKCkucmVxdWVzdC51cmwoKSwgIlByZWNvbm5lY3Rpb24gdGltZWQgb3V0Il9zLCBSZXNvdXJj
ZUVycm9yOjpUeXBlOjpUaW1lb3V0IH0pOyB9KQogewogICAgIFJFTEVBU0VfTE9HKE5ldHdvcmss
ICIlcCAtIFByZWNvbm5lY3RUYXNrOjpQcmVjb25uZWN0VGFzaygpIiwgdGhpcyk7CiAKICAgICBB
U1NFUlQocGFyYW1ldGVycy5zaG91bGRQcmVjb25uZWN0T25seSA9PSBQcmVjb25uZWN0T25seTo6
WWVzKTsKICAgICBtX25ldHdvcmtMb2FkID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMs
IG51bGxwdHIsIFdURk1vdmUocGFyYW1ldGVycyksIG5ldHdvcmtTZXNzaW9uKTsKLSAgICBtX3Rp
bWVvdXRUaW1lci5zdGFydE9uZVNob3QoNjAwMDBfcyk7CiB9CiAKIHZvaWQgUHJlY29ubmVjdFRh
c2s6OnNldEgyUGluZ0NhbGxiYWNrKGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEV4cGVjdGVkPFdURjo6U2Vjb25kcywgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCkBAIC01NSw4ICs1NSwxNCBAQCB2b2lkIFByZWNvbm5lY3RUYXNr
OjpzZXRIMlBpbmdDYWxsYmFjayhjb25zdCBVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChFeAogICAgIG1fbmV0d29ya0xvYWQtPnNldEgyUGluZ0NhbGxiYWNrKHVybCwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogfQogCit2b2lkIFByZWNvbm5lY3RUYXNrOjpzZXRUaW1lb3V0
KFNlY29uZHMgdGltZW91dCkKK3sKKyAgICBtX3RpbWVvdXQgPSB0aW1lb3V0OworfQorCiB2b2lk
IFByZWNvbm5lY3RUYXNrOjpzdGFydCgpCiB7CisgICAgbV90aW1lb3V0VGltZXIuc3RhcnRPbmVT
aG90KG1fdGltZW91dCk7CiAgICAgbV9uZXR3b3JrTG9hZC0+c3RhcnQoKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oCmluZGV4IDEzNjJiMGM2
MDE4YzQ4YTAxN2ZiZDU2NmJkYzM0YzYyYjM2MjU2M2UuLjkwN2M0OTIwMWRjZjcyZDIxNjVkMzhm
NTNlYjlmNzI1ZjgyNDBlYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUHJlY29ubmVjdFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1By
ZWNvbm5lY3RUYXNrLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIk5ldHdvcmtMb2Fk
Q2xpZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgorI2luY2x1ZGUgPG9wdGlvbmFs
PgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFr
UHRyLmg+CiAKQEAgLTQ1LDYgKzQ2LDcgQEAgcHVibGljOgogICAgIH5QcmVjb25uZWN0VGFzaygp
OwogCiAgICAgdm9pZCBzZXRIMlBpbmdDYWxsYmFjayhjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEV4cGVjdGVkPFdURjo6U2Vjb25kcywgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4m
Jik+JiYpOworICAgIHZvaWQgc2V0VGltZW91dChTZWNvbmRzKTsKICAgICB2b2lkIHN0YXJ0KCk7
CiAKIHByaXZhdGU6CkBAIC02Miw2ICs2NCw3IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8TmV0d29ya0xvYWQ+IG1fbmV0d29ya0xvYWQ7CiAgICAgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik+IG1fY29tcGxldGlvbkhhbmRsZXI7
CisgICAgU2Vjb25kcyBtX3RpbWVvdXQ7CiAgICAgV2ViQ29yZTo6VGltZXIgbV90aW1lb3V0VGlt
ZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbQppbmRleCAzZjFkNDY0OGI3OTU3NTU0M2NlNzMyNDEzYWYxMTkyNDBlYjYwZTA4Li5iN2Nk
YTllMjc0ZGUyY2NkYzNkMGY0M2U4NzQwOTE5MDYwZmU3MjA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTMyMzksNyArMzIzOSw3IEBA
IHN0YXRpYyBpbmxpbmUgT3B0aW9uU2V0PFdlYktpdDo6RmluZE9wdGlvbnM+IHRvRmluZE9wdGlv
bnMoX1dLRmluZE9wdGlvbnMgd2tGaW5kCiAtICh2b2lkKV9wcmVjb25uZWN0VG9TZXJ2ZXI6KE5T
VVJMICopdXJsCiB7CiAgICAgVEhST1dfSUZfU1VTUEVOREVEOwotICAgIF9wYWdlLT5wcmVjb25u
ZWN0VG8odXJsKTsKKyAgICBfcGFnZS0+cHJlY29ubmVjdFRvKHVybCwgV2ViS2l0OjpQcmVjb25u
ZWN0UmVhc29uOjpBUElIaW50KTsKIH0KIAogLSAoQk9PTClfY2FuVXNlQ3JlZGVudGlhbFN0b3Jh
Z2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCmluZGV4IDZmN2NhZDE3ZTExYWNkYWI0YzY5MWQ0MzQ2Yzc0YmM0MDQz
Nzg1ZjYuLjYwMTNiYTAxZWYwYjk5ZjJiMDliZGY0ZGI5ZWFkZjdiNmE1ZTZiOGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcApAQCAtMTUxNSwxMSArMTUxNSwxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OmdldExvY2FsU3RvcmFnZURldGFpbHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbAog
ICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkdldExvY2Fs
U3RvcmFnZU9yaWdpbkRldGFpbHMoc2Vzc2lvbklEKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnByZWNvbm5lY3RUbyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgdXNlckFnZW50LCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgTGFzdE5hdmlnYXRpb25XYXNBcHBJ
bml0aWF0ZWQgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpCit2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OnByZWNvbm5lY3RUbyhjb25zdCBVUkwmIHVybCwgUHJlY29ubmVjdFJlYXNvbiBy
ZWFzb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3
ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBjb25zdCBT
dHJpbmcmIHVzZXJBZ2VudCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5p
dGlhdGVkIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKQogewogICAgIGlmICghdXJsLmlz
VmFsaWQoKSB8fCAhdXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkKICAgICAgICAgcmV0dXJu
OwotICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpQcmVjb25uZWN0VG8oc2Vzc2lv
bklELCB3ZWJQYWdlUHJveHlJRCwgd2ViUGFnZUlELCB1cmwsIHVzZXJBZ2VudCwgc3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3ksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIGxhc3ROYXZpZ2F0
aW9uV2FzQXBwSW5pdGlhdGVkKSwgMCk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3M6OlByZWNvbm5lY3RUbyh1cmwsIHJlYXNvbiwgc2Vzc2lvbklELCB3ZWJQYWdlUHJveHlJRCwg
d2ViUGFnZUlELCB1c2VyQWdlbnQsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBpc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluLCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCksIDApOwog
fQogCiBzdGF0aWMgYm9vbCBhbnlQcm9jZXNzUG9vbEhhc0ZvcmVncm91bmRXZWJQcm9jZXNzZXMo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaAppbmRleCAzMzA5MzNmZTJjOGRkNGMxMjQzZDNlYjdlN2U5ZjJmZDZhYTVkZDY5
Li5kZjdlMjY1YTBjNzNmMjE0NDZhNWUyMzY3MDUwZTNkMmYyODI1MDIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApA
QCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkF1eGlsaWFyeVByb2Nlc3NQcm94eS5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlc1JlcGxpZXMuaCIKICNpbmNsdWRlICJO
ZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlByZWNvbm5lY3RSZWFz
b24uaCIKICNpbmNsdWRlICJQcm9jZXNzTGF1bmNoZXIuaCIKICNpbmNsdWRlICJQcm9jZXNzVGhy
b3R0bGVyLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90dGxlckNsaWVudC5oIgpAQCAtMTI5LDcg
KzEzMCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0TG9jYWxTdG9yYWdlRGV0YWlscyhQQUw6
OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8TG9jYWxTdG9yYWdlRGF0
YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzPiYmKT4mJik7CiAKLSAgICB2b2lkIHByZWNvbm5l
Y3RUbyhQQUw6OlNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OlN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
PiwgTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpOworICAgIHZvaWQgcHJlY29ubmVjdFRv
KGNvbnN0IFVSTCYsIFByZWNvbm5lY3RSZWFzb24sIFBBTDo6U2Vzc2lvbklELCBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgV2Vi
Q29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4+LCBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk7CiAKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIHZvaWQgY2xlYXJQcmV2YWxlbnRS
ZXNvdXJjZShQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKaW5kZXggNDFlODI2NmY3MTdkMjRmM2JlNDRiNWEyZDdmNzQ1YzkzYzFhMWJhOS4uNmVl
OTFhZTU4ZWY4MDBlYTM5OGYwMWI1ZTk0Y2QxYzdkNzQxZGY4MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xNDA5LDcgKzE0MDksNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmIHByb2NlcwogCiAgICAgYWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhwcm9jZXNzLCBs
b2FkUGFyYW1ldGVycyk7CiAKLSAgICBwcmVjb25uZWN0VG8odXJsKTsKKyAgICBwcmVjb25uZWN0
VG8odXJsLCBQcmVjb25uZWN0UmVhc29uOjpNYWluUmVzb3VyY2VMb2FkKTsKIAogICAgIG5hdmln
YXRpb24uc2V0SXNMb2FkZWRXaXRoTmF2aWdhdGlvblNoYXJlZCh0cnVlKTsKIApAQCAtNDU4NSwx
NCArNDU4NSwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TmV0d29ya1JlcXVlc3RzSW5Qcm9n
cmVzcyhib29sIG5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MpCiAgICAgbV9wYWdlTG9hZFN0YXRl
LnNldE5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3ModHJhbnNhY3Rpb24sIG5ldHdvcmtSZXF1ZXN0
c0luUHJvZ3Jlc3MpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cHJlY29ubmVjdFRvKGNvbnN0
IFVSTCYgdXJsKQordm9pZCBXZWJQYWdlUHJveHk6OnByZWNvbm5lY3RUbyhjb25zdCBVUkwmIHVy
bCwgUHJlY29ubmVjdFJlYXNvbiByZWFzb24pCiB7CiAgICAgaWYgKCFtX3dlYnNpdGVEYXRhU3Rv
cmUtPmNvbmZpZ3VyYXRpb24oKS5hbGxvd3NTZXJ2ZXJQcmVjb25uZWN0KCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGF1dG8gc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPSBtX2NhblVzZUNyZWRl
bnRpYWxTdG9yYWdlID8gV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZSA6IFdl
YkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZTsKIAotICAgIHdlYnNpdGVE
YXRhU3RvcmUoKS5uZXR3b3JrUHJvY2VzcygpLnByZWNvbm5lY3RUbyhzZXNzaW9uSUQoKSwgaWRl
bnRpZmllcigpLCB3ZWJQYWdlSUQoKSwgdXJsLCB1c2VyQWdlbnQoKSwgc3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3ksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgbV9sYXN0TmF2aWdhdGlv
bldhc0FwcEluaXRpYXRlZCA/IExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpZZXMgOiBM
YXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDo6Tm8pOworICAgIHdlYnNpdGVEYXRhU3RvcmUo
KS5uZXR3b3JrUHJvY2VzcygpLnByZWNvbm5lY3RUbyh1cmwsIHJlYXNvbiwgc2Vzc2lvbklEKCks
IGlkZW50aWZpZXIoKSwgd2ViUGFnZUlEKCksIHVzZXJBZ2VudCgpLCBzdG9yZWRDcmVkZW50aWFs
c1BvbGljeSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBtX2xhc3ROYXZpZ2F0aW9u
V2FzQXBwSW5pdGlhdGVkID8gTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6OlllcyA6IExh
c3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpObyk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRDYW5Vc2VDcmVkZW50aWFsU3RvcmFnZShib29sIGNhblVzZUNyZWRlbnRpYWxTdG9yYWdl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBmMjRjMDMwNzMxY2E3
ZDNhMjM5ODA5NzUzN2YwYzczZDQ0YzFjY2IwLi5kYmQyODY4MTk5NDIwOTJmMDkzOWYyZTk2OTMz
NWE3NGMxZmZjMTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAt
NDksNiArNDksNyBAQAogI2luY2x1ZGUgIlBhc3RlYm9hcmRBY2Nlc3NJbnRlbnQuaCIKICNpbmNs
dWRlICJQbHVnaW5Qcm9jZXNzQXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIlBvbGljeURlY2lzaW9u
LmgiCisjaW5jbHVkZSAiUHJlY29ubmVjdFJlYXNvbi5oIgogI2luY2x1ZGUgIlByb2Nlc3NUZXJt
aW5hdGlvblJlYXNvbi5oIgogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXIuaCIKICNpbmNsdWRl
ICJTYW5kYm94RXh0ZW5zaW9uLmgiCkBAIC0xODgxLDcgKzE4ODIsNyBAQCBwdWJsaWM6CiAKICAg
ICBXZWJQb3B1cE1lbnVQcm94eSogYWN0aXZlUG9wdXBNZW51KCkgY29uc3QgeyByZXR1cm4gbV9h
Y3RpdmVQb3B1cE1lbnUuZ2V0KCk7IH0KIAotICAgIHZvaWQgcHJlY29ubmVjdFRvKGNvbnN0IFVS
TCYpOworICAgIHZvaWQgcHJlY29ubmVjdFRvKGNvbnN0IFVSTCYsIFByZWNvbm5lY3RSZWFzb24p
OwogCiAgICAgYm9vbCBjYW5Vc2VDcmVkZW50aWFsU3RvcmFnZSgpIHsgcmV0dXJuIG1fY2FuVXNl
Q3JlZGVudGlhbFN0b3JhZ2U7IH0KICAgICB2b2lkIHNldENhblVzZUNyZWRlbnRpYWxTdG9yYWdl
KGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggOWU0MTZlZjM3NDQ0ZTQyZWJlNjhjMGUxMDAyNGJjZWNmZmIyN2Y4OC4uMGExMDU4
NzliM2JjYTFmYmQxZjkzYjgxYTVkZGMwNmYwYzI5MjgxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MDA1LDYgKzYwMDUsNyBAQAog
CQlFNUJFRjY4MTIxMzBDNDdGMDBGMzExMTEgLyogV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bk
b3duSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViRGF0
YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLm1tOyBwYXRoID0gaW9zL1dlYkRhdGFMaXN0U3Vn
Z2VzdGlvbnNEcm9wZG93bklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTVD
QjA3REEyMEUxNjc4RjAwMjJDMTgzIC8qIFdLRm9ybUNvbG9yQ29udHJvbC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBXS0Zvcm1Db2xvckNvbnRyb2wuaDsgcGF0aCA9IGlvcy9mb3Jtcy9XS0Zvcm1Db2xvckNv
bnRyb2wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTVDQjA3REIyMEUxNjc4RjAw
MjJDMTgzIC8qIFdLRm9ybUNvbG9yQ29udHJvbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdL
Rm9ybUNvbG9yQ29udHJvbC5tbTsgcGF0aCA9IGlvcy9mb3Jtcy9XS0Zvcm1Db2xvckNvbnRyb2wu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUVCOTUxNDcyMjZEREQ3QzYwMDExMzNB
QSAvKiBQcmVjb25uZWN0UmVhc29uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFByZWNvbm5lY3RSZWFzb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUNBNjgw
RDMxRTY5MDRCNTAwNzMxRDIwIC8qIEV4dHJhUHJpdmF0ZVN5bWJvbHNGb3JUQVBJLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dHJhUHJpdmF0ZVN5bWJvbHNGb3JUQVBJLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVDQkZDMURCMUU2QTRENjYwMDAzMDBDNyAv
KiBFeHRyYVB1YmxpY1N5bWJvbHNGb3JUQVBJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dHJhUHVibGlj
U3ltYm9sc0ZvclRBUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjAzNjk3ODcx
NUY0QkYwNTAwQzNBODBFIC8qIFdlYkNvbG9yUGlja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvbG9yUGlja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTg3NTAsNiArODc1MSw3IEBACiAJCQkJNTE4MzI0N0EyNjE2ODY3NTAwM0Yy
MzlFIC8qIE5ldHdvcmtVUkxTY2hlbWVUYXNrLmggKi8sCiAJCQkJNDYyMTA3RDcxRjM4REJEMzAw
REQ3ODEwIC8qIFBpbmdMb2FkLmNwcCAqLywKIAkJCQk1Q0U4NUIxRjFDODhFNjQzMDA3MEJGQ0Ug
LyogUGluZ0xvYWQuaCAqLywKKwkJCQlFQjk1MTQ3MjI2REREN0M2MDAxMTMzQUEgLyogUHJlY29u
bmVjdFJlYXNvbi5oICovLAogCQkJCTgzQTBFRDMzMUY3NDdDQzcwMDMyOTlFQiAvKiBQcmVjb25u
ZWN0VGFzay5jcHAgKi8sCiAJCQkJODNBMEVEMzIxRjc0N0NDNjAwMzI5OUVCIC8qIFByZWNvbm5l
Y3RUYXNrLmggKi8sCiAJCQkJNkJEMDU4NjQyMjBDRThDMjAwMEJFRDVDIC8qIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50TWFuYWdlci5jcHAgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437634</attachid>
            <date>2021-09-08 09:13:08 -0700</date>
            <delta_ts>2021-09-08 10:21:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229686-20210908091307.patch</filename>
            <type>text/plain</type>
            <size>30609</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDYxZjdhZDFjYTg4N2Q1YmZk
MjEyZjQzOTNkMGM1MmFlYWFjMGI1N2IuLjBiZDVkODI4MWY1YTljYjUwZWYxZGEwZTgyMTFlNmM1
MjUwNWQwZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMjEtMDgtMzAgIEJlbiBOaGFt
ICA8bmhhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUHJlY29ubmVjdGVkIHNvY2tldCBpcyBzb21l
dGltZXMgbm90IHVzZWQgZm9yIGluaXRpYWwgcmVxdWVzdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5Njg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gdGhlIHByZXZpb3VzIHJlbGVhc2UsIHdlIHBy
ZWNvbm5lY3RlZCB0byB0aGUgbWFpbiByZXNvdXJjZSBvcmlnaW4gZWFybHkgaW4gcGFnZSBsb2Fk
IGZyb20KKyAgICAgICAgVUlQcm9jZXNzIHRvIHNhdmUgfjEwLTE1IG1zIHBlciBwYWdlIGxvYWQg
KGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQ5OTIpLgorICAgICAg
ICBUaGUgc2F2aW5ncyBjb21lcyBmcm9tIHRoZSBmYWN0IHRoYXQgdGhlcmUncyBzb21lIGxhdGVu
Y3kgaW4gaW5pdGlhdGluZyB0aGUgcmVxdWVzdCBpbgorICAgICAgICBXZWJQcm9jZXNzIGFuZCB3
YWl0aW5nIGZvciB0aGUgbmF2IGRlbGVnYXRlIHJlcGx5IGluIFVJUHJvY2Vzcy4gV2UgaGlkZSB0
aGF0IGxhdGVuY3kgYnkKKyAgICAgICAgaGF2aW5nIHRoZSBldmVudHVhbCBtYWluIHJlc291cmNl
IHJlcXVlc3QgcmV1c2UgdGhlIGVhcmx5IHByZWNvbm5lY3RlZCBzb2NrZXQuCisKKyAgICAgICAg
SG93ZXZlciwgdGhpcyBvcHRpbWl6YXRpb24gZG9lc24ndCB3b3JrIGZvciBjb25uZWN0aW9ucyB0
byBrbm93biBIVFRQLzEuMSBvcmlnaW5zIGR1ZSB0bworICAgICAgICBDRk5ldHdvcmsncyBpbi1t
ZW1vcnkgY2FjaGUgb2Yga25vd24gSFRUUC8xLjEgb3JpZ2lucy4gSWYgYW4gb3JpZ2luIGlzIGlu
IHRoaXMgY2FjaGUsIGFuZAorICAgICAgICBhIHByZWNvbm5lY3QgaXMgc3RpbGwgaW4gZmxpZ2h0
LCB0aGVuIHRoZSBuZXR3b3JrIHN0YWNrIHdpbGwgZ28gd2lkZSBpbW1lZGlhdGVseSBhbmQgaXNz
dWUKKyAgICAgICAgdGhlIG1haW4gcmVzb3VyY2UgcmVxdWVzdCBvbiBhIG5ldyBzb2NrZXQgcmF0
aGVyIHRoYW4gdHJ5aW5nIHRvIHdhaXQgZm9yIHRoZSBwcmVjb25uZWN0IHRvCisgICAgICAgIGZp
bmlzaCBhbmQgcmV1c2UgdGhlIHByZWNvbm5lY3RlZCBzb2NrZXQuIFRodXMgdGhlIHByZWNvbm5l
dGVkIHNvY2tldCBqdXN0IGdvZXMgdG8gd2FzdGUuCisgICAgICAgIFRoaXMgY2FuIGFsc28gY2F1
c2UgaXNzdWVzIHdpdGggc2luZ2xlLXRocmVhZGVkIHdlYiBzZXJ2ZXJzIHRoYXQgc2VydmUgb25s
eSBvbmUgcmVxdWVzdCBhdAorICAgICAgICBhIHRpbWUsIGFzIHRoZSBtYWluIHJlc291cmNlIHJl
cXVlc3QgY2FuIGdldCBoZWFkLW9mLWxpbmUgYmxvY2tlZCBieSB0aGUgcHJlY29ubmVjdCB0aGF0
CisgICAgICAgIGlzIHdhc3RlZC4KKworICAgICAgICBUbyB3b3JrIGFyb3VuZCB0aGlzLCB0aGlz
IHBhdGNoIHRyYWNrcyBhIHNtYWxsIG51bWJlciBvZiBrbm93biBIVFRQLzEuMSBvcmlnaW5zIGlu
IG1lbW9yeS4KKyAgICAgICAgSWYgdGhlcmUgaXMgYSBwZW5kaW5nIHByZWNvbm5lY3QgdG8gYW4g
SFRUUC8xLjEgb3JpZ2luIGFuZCBhIG1haW4gcmVzb3VyY2UgcmVxdWVzdCB0byB0aGF0CisgICAg
ICAgIG9yaWdpbiBjb21lcyBpbiwgdGhlbiB3ZSBibG9jayB0aGUgcmVxdWVzdCBmcm9tIGdvaW5n
IG91dCB1bnRpbCB0aGUgcHJlY29ubmVjdCBmaW5pc2hlcy4KKyAgICAgICAgVGhpcyBhbGxvd3Mg
dGhlIG1haW4gcmVzb3VyY2UgcmVxdWVzdCB0byB1dGlsaXplIHRoZSBwcmVjb25uZWN0ZWQgc29j
a2V0LgorCisgICAgICAgIFRoaXMgaXMgd29ydGggfjEuMjUlLTIuNSUgb24gUExUNSBkZXBlbmRp
bmcgb24gZGV2aWNlLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkQ29tcGxldGVXaXRoRXJyb3IpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkU2NoZWR1bGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0xvYWRTY2hlZHVsZXI6OnNjaGVkdWxlKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0xvYWRTY2hlZHVsZXI6OnVuc2NoZWR1bGUpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVMb2FkKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0xvYWRTY2hlZHVsZXI6OnVuc2NoZWR1bGVMb2FkKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0xvYWRTY2hlZHVsZXI6OnNjaGVkdWxlTWFpblJlc291cmNlTG9hZCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtMb2FkU2NoZWR1bGVyOjp1bnNjaGVkdWxlTWFpblJlc291cmNlTG9h
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkU2NoZWR1bGVyOjpzdGFydGVkUHJlY29u
bmVjdEZvck1haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkU2NoZWR1
bGVyOjpmaW5pc2hlZFByZWNvbm5lY3RGb3JNYWluUmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrTG9hZFNjaGVkdWxlcjo6aXNPcmlnaW5IVFRQMVgpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrTG9hZFNjaGVkdWxlcjo6dXBkYXRlT3JpZ2luUHJvdG9jb2xJbmZvKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFNjaGVkdWxlci5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnByZWNvbm5lY3RUbyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNz
YWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0UmVhc29uLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dL
V2ViVmlldyBfcHJlY29ubmVjdFRvU2VydmVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpwcmVjb25uZWN0VG8pOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0
aW9uU2hhcmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwcmVjb25uZWN0VG8p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMS0wOC0yNiAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ3V0IGRvd24gb24gdXNlIG9mIENGR2V0VHlwZUlE
LCB1c2luZyBkeW5hbWljX2NmX2Nhc3QgaW5zdGVhZDsgcmVsYXRlZCBzdHJlYW1saW5pbmcKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKaW5kZXggM2U3MzEx
MTcxYTk0MGI0NDkzZWQ0NmExZmVkMDZiNjZmYzBiNjFkMC4uMmFhMDM3NzJmYTU5YjhiM2U4MjQ2
Njc4MGEzNWJmZTY0YjEyMGRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZC5jcHAKQEAgLTI0NSw3ICsyNDUsNyBAQCB2b2lkIE5ldHdvcmtMb2FkOjpkaWRS
ZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHZvaWQgTmV0d29ya0xvYWQ6
OmRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKIHsKICAgICBp
ZiAobV9zY2hlZHVsZXIpIHsKLSAgICAgICAgbV9zY2hlZHVsZXItPnVuc2NoZWR1bGUoKnRoaXMp
OworICAgICAgICBtX3NjaGVkdWxlci0+dW5zY2hlZHVsZSgqdGhpcywgJm5ldHdvcmtMb2FkTWV0
cmljcyk7CiAgICAgICAgIG1fc2NoZWR1bGVyID0gbnVsbHB0cjsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRTY2hlZHVsZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFNjaGVkdWxlci5jcHAK
aW5kZXggMWU0ODBmNTRhMmFlNjk3MzFlNzUzNjM3YmYwOGQzMDE0MjNjNzJlZi4uNzg4NGNkNzRj
M2YwNzMzZWJkMjVkM2VkNmI5NmQ3MzVjODEwMGFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFNjaGVkdWxlci5jcHAKQEAgLTI2LDEyICsy
NiwxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtMb2FkU2NoZWR1
bGVyLmgiCiAKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWQuaCIK
LSNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
RXJyb3IuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90
IG1heGltdW1BY3RpdmVDb3VudEZvckxvd1ByaW9yaXR5ID0gMjsKK3N0YXRpYyBjb25zdGV4cHIg
c2l6ZV90IG1heGltdW1UcmFja2VkSFRUUDFYT3JpZ2lucyA9IDEyODsKIAogY2xhc3MgTmV0d29y
a0xvYWRTY2hlZHVsZXI6Okhvc3RDb250ZXh0IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKQEAgLTExNiw2ICsxMTgsMjQgQEAgTmV0d29ya0xvYWRTY2hlZHVsZXI6Ok5ldHdvcmtMb2Fk
U2NoZWR1bGVyKCkgPSBkZWZhdWx0OwogTmV0d29ya0xvYWRTY2hlZHVsZXI6On5OZXR3b3JrTG9h
ZFNjaGVkdWxlcigpID0gZGVmYXVsdDsKIAogdm9pZCBOZXR3b3JrTG9hZFNjaGVkdWxlcjo6c2No
ZWR1bGUoTmV0d29ya0xvYWQmIGxvYWQpCit7CisgICAgYm9vbCBpc01haW5GcmFtZU1haW5SZXNv
dXJjZSA9IGxvYWQuY3VycmVudFJlcXVlc3QoKS5pc1RvcFNpdGUoKTsKKyAgICBpZiAoaXNNYWlu
RnJhbWVNYWluUmVzb3VyY2UpCisgICAgICAgIHNjaGVkdWxlTWFpblJlc291cmNlTG9hZChsb2Fk
KTsKKyAgICBlbHNlCisgICAgICAgIHNjaGVkdWxlTG9hZChsb2FkKTsKK30KKwordm9pZCBOZXR3
b3JrTG9hZFNjaGVkdWxlcjo6dW5zY2hlZHVsZShOZXR3b3JrTG9hZCYgbG9hZCwgY29uc3QgV2Vi
Q29yZTo6TmV0d29ya0xvYWRNZXRyaWNzKiBtZXRyaWNzKQoreworICAgIGJvb2wgaXNNYWluRnJh
bWVNYWluUmVzb3VyY2UgPSBsb2FkLmN1cnJlbnRSZXF1ZXN0KCkuaXNUb3BTaXRlKCk7CisgICAg
aWYgKGlzTWFpbkZyYW1lTWFpblJlc291cmNlKQorICAgICAgICB1bnNjaGVkdWxlTWFpblJlc291
cmNlTG9hZChsb2FkLCBtZXRyaWNzKTsKKyAgICBlbHNlCisgICAgICAgIHVuc2NoZWR1bGVMb2Fk
KGxvYWQpOworfQorCit2b2lkIE5ldHdvcmtMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZUxvYWQoTmV0
d29ya0xvYWQmIGxvYWQpCiB7CiAgICAgYXV0byogY29udGV4dCA9IGNvbnRleHRGb3JMb2FkKGxv
YWQpOwogCkBAIC0xMjcsMTIgKzE0NywxMDkgQEAgdm9pZCBOZXR3b3JrTG9hZFNjaGVkdWxlcjo6
c2NoZWR1bGUoTmV0d29ya0xvYWQmIGxvYWQpCiAgICAgY29udGV4dC0+c2NoZWR1bGUobG9hZCk7
CiB9CiAKLXZvaWQgTmV0d29ya0xvYWRTY2hlZHVsZXI6OnVuc2NoZWR1bGUoTmV0d29ya0xvYWQm
IGxvYWQpCit2b2lkIE5ldHdvcmtMb2FkU2NoZWR1bGVyOjp1bnNjaGVkdWxlTG9hZChOZXR3b3Jr
TG9hZCYgbG9hZCkKIHsKICAgICBpZiAoYXV0byogY29udGV4dCA9IGNvbnRleHRGb3JMb2FkKGxv
YWQpKQogICAgICAgICBjb250ZXh0LT51bnNjaGVkdWxlKGxvYWQpOwogfQogCit2b2lkIE5ldHdv
cmtMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZU1haW5SZXNvdXJjZUxvYWQoTmV0d29ya0xvYWQmIGxv
YWQpCit7CisgICAgU3RyaW5nIHByb3RvY29sSG9zdEFuZFBvcnQgPSBsb2FkLnVybCgpLnByb3Rv
Y29sSG9zdEFuZFBvcnQoKTsKKyAgICBpZiAoIWlzT3JpZ2luSFRUUDFYKHByb3RvY29sSG9zdEFu
ZFBvcnQpKSB7CisgICAgICAgIGxvYWQuc3RhcnQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGF1dG8gaXRlciA9IG1fcGVuZGluZ01haW5SZXNvdXJjZVByZWNvbm5lY3RzLmZpbmQo
cHJvdG9jb2xIb3N0QW5kUG9ydCk7CisgICAgaWYgKGl0ZXIgPT0gbV9wZW5kaW5nTWFpblJlc291
cmNlUHJlY29ubmVjdHMuZW5kKCkpIHsKKyAgICAgICAgbG9hZC5zdGFydCgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgUGVuZGluZ01haW5SZXNvdXJjZVByZWNvbm5lY3RJbmZvJiBp
bmZvID0gaXRlci0+dmFsdWU7CisgICAgaWYgKCFpbmZvLnBlbmRpbmdQcmVjb25uZWN0cykgewor
ICAgICAgICBsb2FkLnN0YXJ0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAtLWlu
Zm8ucGVuZGluZ1ByZWNvbm5lY3RzOworICAgIGluZm8ucGVuZGluZ0xvYWRzLmFkZCgmbG9hZCk7
CisgICAgUkVMRUFTRV9MT0coTmV0d29yaywgIiVwIC0gTmV0d29ya0xvYWRTY2hlZHVsZXI6OnNj
aGVkdWxlTWFpblJlc291cmNlTG9hZCBkZWZlcnJpbmcgbG9hZCAlcDsgJXUgcGVuZGluZyBwcmVj
b25uZWN0czsgJXUgcGVuZGluZyBsb2FkcyIsIHRoaXMsICZsb2FkLCBpbmZvLnBlbmRpbmdQcmVj
b25uZWN0cywgaW5mby5wZW5kaW5nTG9hZHMuc2l6ZSgpKTsKK30KKwordm9pZCBOZXR3b3JrTG9h
ZFNjaGVkdWxlcjo6dW5zY2hlZHVsZU1haW5SZXNvdXJjZUxvYWQoTmV0d29ya0xvYWQmIGxvYWQs
IGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyogbWV0cmljcykKK3sKKyAgICBTdHJp
bmcgcHJvdG9jb2xIb3N0QW5kUG9ydCA9IGxvYWQudXJsKCkucHJvdG9jb2xIb3N0QW5kUG9ydCgp
OworCisgICAgaWYgKG1ldHJpY3MpCisgICAgICAgIHVwZGF0ZU9yaWdpblByb3RvY29sSW5mbyhw
cm90b2NvbEhvc3RBbmRQb3J0LCBtZXRyaWNzLT5wcm90b2NvbCk7CisKKyAgICBhdXRvIGl0ZXIg
PSBtX3BlbmRpbmdNYWluUmVzb3VyY2VQcmVjb25uZWN0cy5maW5kKHByb3RvY29sSG9zdEFuZFBv
cnQpOworICAgIGlmIChpdGVyID09IG1fcGVuZGluZ01haW5SZXNvdXJjZVByZWNvbm5lY3RzLmVu
ZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBQZW5kaW5nTWFpblJlc291cmNlUHJlY29ubmVj
dEluZm8mIGluZm8gPSBpdGVyLT52YWx1ZTsKKyAgICBpZiAoaW5mby5wZW5kaW5nTG9hZHMucmVt
b3ZlKCZsb2FkKSkKKyAgICAgICAgbWF5YmVQcnVuZVByZWNvbm5lY3RJbmZvKGl0ZXIpOworfQor
Cit2b2lkIE5ldHdvcmtMb2FkU2NoZWR1bGVyOjpzdGFydGVkUHJlY29ubmVjdEZvck1haW5SZXNv
dXJjZShjb25zdCBVUkwmIHVybCkKK3sKKyAgICBhdXRvIGl0ZXIgPSBtX3BlbmRpbmdNYWluUmVz
b3VyY2VQcmVjb25uZWN0cy5maW5kKHVybC5wcm90b2NvbEhvc3RBbmRQb3J0KCkpOworICAgIGlm
IChpdGVyICE9IG1fcGVuZGluZ01haW5SZXNvdXJjZVByZWNvbm5lY3RzLmVuZCgpKSB7CisgICAg
ICAgIFBlbmRpbmdNYWluUmVzb3VyY2VQcmVjb25uZWN0SW5mbyYgaW5mbyA9IGl0ZXItPnZhbHVl
OworICAgICAgICBpbmZvLnBlbmRpbmdQcmVjb25uZWN0cysrOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgUGVuZGluZ01haW5SZXNvdXJjZVByZWNvbm5lY3RJbmZvIGluZm87CisgICAg
bV9wZW5kaW5nTWFpblJlc291cmNlUHJlY29ubmVjdHMuYWRkKHVybC5wcm90b2NvbEhvc3RBbmRQ
b3J0KCksIFdURk1vdmUoaW5mbykpOworfQorCit2b2lkIE5ldHdvcmtMb2FkU2NoZWR1bGVyOjpm
aW5pc2hlZFByZWNvbm5lY3RGb3JNYWluUmVzb3VyY2UoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQoreworICAgIGF1dG8gaXRlciA9IG1fcGVuZGlu
Z01haW5SZXNvdXJjZVByZWNvbm5lY3RzLmZpbmQodXJsLnByb3RvY29sSG9zdEFuZFBvcnQoKSk7
CisgICAgaWYgKGl0ZXIgPT0gbV9wZW5kaW5nTWFpblJlc291cmNlUHJlY29ubmVjdHMuZW5kKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIFBlbmRpbmdNYWluUmVzb3VyY2VQcmVjb25uZWN0SW5m
byYgaW5mbyA9IGl0ZXItPnZhbHVlOworICAgIGlmICghaW5mby5wZW5kaW5nTG9hZHMuaXNFbXB0
eSgpKSB7CisgICAgICAgIE5ldHdvcmtMb2FkKiBsb2FkID0gaW5mby5wZW5kaW5nTG9hZHMudGFr
ZUZpcnN0KCk7CisgICAgICAgIFJFTEVBU0VfTE9HKE5ldHdvcmssICIlcCAtIE5ldHdvcmtMb2Fk
U2NoZWR1bGVyOjpmaW5pc2hlZFByZWNvbm5lY3RGb3JNYWluUmVzb3VyY2UgKGVycm9yOiAlZCkg
c3RhcnRpbmcgZGVsYXllZCBtYWluIHJlc291cmNlIGxvYWQgJXA7ICV1IHBlbmRpbmcgcHJlY29u
bmVjdHM7ICV1IHRvdGFsIHBlbmRpbmcgbG9hZHMiLCB0aGlzLCBzdGF0aWNfY2FzdDxpbnQ+KGVy
cm9yLnR5cGUoKSksIGxvYWQsIGluZm8ucGVuZGluZ1ByZWNvbm5lY3RzLCBpbmZvLnBlbmRpbmdM
b2Fkcy5zaXplKCkpOworICAgICAgICBsb2FkLT5zdGFydCgpOworICAgIH0gZWxzZQorICAgICAg
ICAtLWluZm8ucGVuZGluZ1ByZWNvbm5lY3RzOworCisgICAgbWF5YmVQcnVuZVByZWNvbm5lY3RJ
bmZvKGl0ZXIpOworfQorCit2b2lkIE5ldHdvcmtMb2FkU2NoZWR1bGVyOjptYXliZVBydW5lUHJl
Y29ubmVjdEluZm8oUGVuZGluZ1ByZWNvbm5lY3RNYXA6Oml0ZXJhdG9yJiBpdGVyKQoreworICAg
IFBlbmRpbmdNYWluUmVzb3VyY2VQcmVjb25uZWN0SW5mbyYgaW5mbyA9IGl0ZXItPnZhbHVlOwor
ICAgIGlmICghaW5mby5wZW5kaW5nUHJlY29ubmVjdHMgJiYgaW5mby5wZW5kaW5nTG9hZHMuaXNF
bXB0eSgpKQorICAgICAgICBtX3BlbmRpbmdNYWluUmVzb3VyY2VQcmVjb25uZWN0cy5yZW1vdmUo
aXRlcik7Cit9CisKKworYm9vbCBOZXR3b3JrTG9hZFNjaGVkdWxlcjo6aXNPcmlnaW5IVFRQMVgo
Y29uc3QgU3RyaW5nJiBwcm90b2NvbEhvc3RBbmRQb3J0KQoreworICAgIHJldHVybiBtX2h0dHAx
WE9yaWdpbnMuY29udGFpbnMocHJvdG9jb2xIb3N0QW5kUG9ydCk7Cit9CisKK3ZvaWQgTmV0d29y
a0xvYWRTY2hlZHVsZXI6OnVwZGF0ZU9yaWdpblByb3RvY29sSW5mbyhjb25zdCBTdHJpbmcmIHBy
b3RvY29sSG9zdEFuZFBvcnQsIGNvbnN0IFN0cmluZyYgYWxwblByb3RvY29sSUQpCit7CisgICAg
aWYgKGFscG5Qcm90b2NvbElEICE9ICJodHRwLzEuMSJfcykgeworICAgICAgICBtX2h0dHAxWE9y
aWdpbnMucmVtb3ZlKHByb3RvY29sSG9zdEFuZFBvcnQpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgaWYgKG1faHR0cDFYT3JpZ2lucy5zaXplKCkgPj0gbWF4aW11bVRyYWNrZWRIVFRQ
MVhPcmlnaW5zKQorICAgICAgICBtX2h0dHAxWE9yaWdpbnMucmVtb3ZlKG1faHR0cDFYT3JpZ2lu
cy5yYW5kb20oKSk7CisKKyAgICBtX2h0dHAxWE9yaWdpbnMuYWRkKHByb3RvY29sSG9zdEFuZFBv
cnQpOworfQorCiB2b2lkIE5ldHdvcmtMb2FkU2NoZWR1bGVyOjpzZXRSZXNvdXJjZUxvYWRTY2hl
ZHVsaW5nTW9kZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSWRlbnRpZmllciwgV2ViQ29y
ZTo6TG9hZFNjaGVkdWxpbmdNb2RlIG1vZGUpCiB7CiAgICAgc3dpdGNoIChtb2RlKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkU2NoZWR1bGVy
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkU2NoZWR1bGVyLmgK
aW5kZXggMjk5YzgxYWMzMjg5Zjg5Zjc1NGE2YzZkMTkzMzE5NzhjMmIyNjc5Mi4uZTA4MGExOGQy
ZjAyZTI4Njc5ZmI0NDZkMWE5N2E0YjY0ZDhjZTgyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFNjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRTY2hlZHVsZXIuaApAQCAtMjYsMTAgKzI2LDE3
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPFdlYkNvcmUvTG9hZFNjaGVkdWxpbmdNb2Rl
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrTG9hZE1ldHJpY3MuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFJlc291cmNl
RXJyb3I7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBOZXR3b3JrTG9hZDsKQEAg
LTQxLDE4ICs0OCw0MSBAQCBwdWJsaWM6CiAgICAgfk5ldHdvcmtMb2FkU2NoZWR1bGVyKCk7CiAK
ICAgICB2b2lkIHNjaGVkdWxlKE5ldHdvcmtMb2FkJik7Ci0gICAgdm9pZCB1bnNjaGVkdWxlKE5l
dHdvcmtMb2FkJik7CisgICAgdm9pZCB1bnNjaGVkdWxlKE5ldHdvcmtMb2FkJiwgY29uc3QgV2Vi
Q29yZTo6TmV0d29ya0xvYWRNZXRyaWNzKiA9IG51bGxwdHIpOworCisgICAgdm9pZCBzdGFydGVk
UHJlY29ubmVjdEZvck1haW5SZXNvdXJjZShjb25zdCBVUkwmKTsKKyAgICB2b2lkIGZpbmlzaGVk
UHJlY29ubmVjdEZvck1haW5SZXNvdXJjZShjb25zdCBVUkwmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJik7CiAKICAgICB2b2lkIHNldFJlc291cmNlTG9hZFNjaGVkdWxpbmdNb2RlKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpMb2FkU2NoZWR1bGluZ01vZGUpOwogICAg
IHZvaWQgcHJpb3JpdGl6ZUxvYWRzKGNvbnN0IFZlY3RvcjxOZXR3b3JrTG9hZCo+Jik7CiAgICAg
dm9pZCBjbGVhclBhZ2VEYXRhKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKIAogcHJpdmF0ZToK
KyAgICB2b2lkIHNjaGVkdWxlTG9hZChOZXR3b3JrTG9hZCYpOworICAgIHZvaWQgdW5zY2hlZHVs
ZUxvYWQoTmV0d29ya0xvYWQmKTsKKworICAgIHZvaWQgc2NoZWR1bGVNYWluUmVzb3VyY2VMb2Fk
KE5ldHdvcmtMb2FkJik7CisgICAgdm9pZCB1bnNjaGVkdWxlTWFpblJlc291cmNlTG9hZChOZXR3
b3JrTG9hZCYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyopOworCisgICAgYm9v
bCBpc09yaWdpbkhUVFAxWChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHVwZGF0ZU9yaWdpblBy
b3RvY29sSW5mbyhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKKwogICAgIGNsYXNzIEhv
c3RDb250ZXh0OwogICAgIEhvc3RDb250ZXh0KiBjb250ZXh0Rm9yTG9hZChjb25zdCBOZXR3b3Jr
TG9hZCYpOwogCiAgICAgdXNpbmcgUGFnZUNvbnRleHQgPSBIYXNoTWFwPFN0cmluZywgc3RkOjp1
bmlxdWVfcHRyPEhvc3RDb250ZXh0Pj47CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllciwgc3RkOjp1bmlxdWVfcHRyPFBhZ2VDb250ZXh0Pj4gbV9wYWdlQ29udGV4dHM7CisKKyAg
ICBzdHJ1Y3QgUGVuZGluZ01haW5SZXNvdXJjZVByZWNvbm5lY3RJbmZvIHsKKyAgICAgICAgdW5z
aWduZWQgcGVuZGluZ1ByZWNvbm5lY3RzIHsxfTsKKyAgICAgICAgTGlzdEhhc2hTZXQ8TmV0d29y
a0xvYWQgKj4gcGVuZGluZ0xvYWRzOworICAgIH07CisgICAgdXNpbmcgUGVuZGluZ1ByZWNvbm5l
Y3RNYXAgPSBIYXNoTWFwPFN0cmluZywgUGVuZGluZ01haW5SZXNvdXJjZVByZWNvbm5lY3RJbmZv
PjsKKyAgICBQZW5kaW5nUHJlY29ubmVjdE1hcCBtX3BlbmRpbmdNYWluUmVzb3VyY2VQcmVjb25u
ZWN0czsKKworICAgIHZvaWQgbWF5YmVQcnVuZVByZWNvbm5lY3RJbmZvKFBlbmRpbmdQcmVjb25u
ZWN0TWFwOjppdGVyYXRvciYpOworCisgICAgSGFzaFNldDxTdHJpbmc+IG1faHR0cDFYT3JpZ2lu
czsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAKaW5kZXggNzQ2YmRjNmVmYTk4OTJkNjU4YThhOGIxZjdlYzBiNmQzZTNhNmM2ZS4u
OGU0NTFhNmEwN2NhNDUxNmRiOTZhNmM2NTM1NDBkMDEyYmQ2ZGM0OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTEzNjQsNyArMTM2
NCw3IEBAIGJvb2wgTmV0d29ya1Byb2Nlc3M6OnByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdN
b2RlRW5hYmxlZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRE
ZWJ1Z01vZGVFbmFibGVkOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVjb25uZWN0VG8o
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQ
cm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIExhc3ROYXZpZ2F0aW9u
V2FzQXBwSW5pdGlhdGVkIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKQordm9pZCBOZXR3
b3JrUHJvY2Vzczo6cHJlY29ubmVjdFRvKGNvbnN0IFVSTCYgdXJsLCBQcmVjb25uZWN0UmVhc29u
IHJlYXNvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVy
IHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIGNvbnN0
IFN0cmluZyYgdXNlckFnZW50LCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgTGFzdE5hdmlnYXRpb25XYXNBcHBJ
bml0aWF0ZWQgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpCiB7CiAgICAgTE9HKE5ldHdv
cmssICIoTmV0d29ya1Byb2Nlc3MpIFByZWNvbm5lY3RpbmcgdG8gVVJMICVzIChzdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSAlaSkiLCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgKGludClzdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSk7CiAKQEAgLTEzOTMsNyArMTM5MywxNyBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQYWdl
UHJveHlJZGVudGlmaQogICAgIHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPSBz
dG9yZWRDcmVkZW50aWFsc1BvbGljeTsKICAgICBwYXJhbWV0ZXJzLnNob3VsZFByZWNvbm5lY3RP
bmx5ID0gUHJlY29ubmVjdE9ubHk6OlllczsKIAotICAgIChuZXcgUHJlY29ubmVjdFRhc2soKm5l
dHdvcmtTZXNzaW9uLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbXShjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJikgeyB9KSktPnN0YXJ0KCk7CisgICAgaWYgKHJlYXNvbiA9PSBQcmVjb25uZWN0
UmVhc29uOjpNYWluUmVzb3VyY2VMb2FkKSB7CisgICAgICAgIHBhcmFtZXRlcnMucmVxdWVzdC5z
ZXRQcmlvcml0eShXZWJDb3JlOjpSZXNvdXJjZUxvYWRQcmlvcml0eTo6VmVyeUhpZ2gpOworICAg
ICAgICBuZXR3b3JrU2Vzc2lvbi0+bmV0d29ya0xvYWRTY2hlZHVsZXIoKS5zdGFydGVkUHJlY29u
bmVjdEZvck1haW5SZXNvdXJjZSh1cmwpOworICAgIH0KKworICAgIGF1dG8gdGFzayA9IG5ldyBQ
cmVjb25uZWN0VGFzaygqbmV0d29ya1Nlc3Npb24sIFdURk1vdmUocGFyYW1ldGVycyksIFtyZWFz
b24sIG5ldHdvcmtTZXNzaW9uLCB1cmxdKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVy
cm9yKSB7CisgICAgICAgIGlmIChyZWFzb24gPT0gUHJlY29ubmVjdFJlYXNvbjo6TWFpblJlc291
cmNlTG9hZCkKKyAgICAgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5uZXR3b3JrTG9hZFNjaGVkdWxl
cigpLmZpbmlzaGVkUHJlY29ubmVjdEZvck1haW5SZXNvdXJjZSh1cmwsIGVycm9yKTsKKyAgICB9
KTsKKyAgICB0YXNrLT5zZXRUaW1lb3V0KDEwX3MpOworICAgIHRhc2stPnN0YXJ0KCk7CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTSh1cmwpOwogICAgIFVOVVNFRF9QQVJBTSh1c2VyQWdlbnQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGUx
NmY2ZGQ0ODk2Y2Q0Y2Q5N2I3MDNiM2RhNTdhNTUyMjgwOTg0MjIuLmQzNjIyODYxMTNhY2UwY2Yy
YjIwYjA2NDkyZTI1ZmRmODAzNjI5YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJMb2NhbFN0
b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29udGVudFJ1bGVMaXN0
TWFuYWdlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyLmgiCisj
aW5jbHVkZSAiUHJlY29ubmVjdFJlYXNvbi5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsUmVt
b3RlTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1
ZGUgIldlYklEQlNlcnZlci5oIgpAQCAtMjkxLDcgKzI5Miw3IEBAIHB1YmxpYzoKICAgICB1c2lu
ZyBDYWNoZVN0b3JhZ2VSb290UGF0aENhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dHJpbmcmJik+OwogICAgIHZvaWQgY2FjaGVTdG9yYWdlUm9vdFBhdGgoUEFMOjpTZXNzaW9uSUQs
IENhY2hlU3RvcmFnZVJvb3RQYXRoQ2FsbGJhY2smJik7CiAKLSAgICB2b2lkIHByZWNvbm5lY3RU
byhQQUw6OlNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OlN0b3JlZENyZWRl
bnRpYWxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwg
TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpOworICAgIHZvaWQgcHJlY29ubmVjdFRvKGNv
bnN0IFVSTCYsIFByZWNvbm5lY3RSZWFzb24sIFBBTDo6U2Vzc2lvbklELCBXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgV2ViQ29y
ZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4+LCBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk7CiAKICAgICB2b2lk
IHNldFNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oUEFMOjpTZXNzaW9uSUQsIGJvb2wp
OwogICAgIGJvb2wgc2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0b21hdGlvbihQQUw6OlNlc3Npb25J
RCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBjYWViOGQ5YmI4NDhjNjkwMGFlOTU1NWQwNzU5
ZjkyZDU5YmYyNDkyLi5lMTQ1N2U2ZDRiNTMzOGE1MGRkOWFlYWZiNzk0OTMxNDExZWNkMDY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MubWVzc2FnZXMuaW4KQEAgLTc0LDcgKzc0LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nl
c3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFByZXBhcmVUb1N1c3BlbmQoYm9vbCBpc1N1c3BlbnNp
b25JbW1pbmVudCkgLT4gKCkgQXN5bmMKICAgICBQcm9jZXNzRGlkUmVzdW1lKCkKIAotICAgIFBy
ZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5
SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFn
ZUlELCBVUkwgdXJsLCBTdHJpbmcgdXNlckFnZW50LCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6U3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGVudW06Ym9vbCBz
dGQ6Om9wdGlvbmFsPFdlYktpdDo6TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4sIGVudW06Ym9vbCBXZWJLaXQ6Okxhc3ROYXZpZ2F0aW9uV2Fz
QXBwSW5pdGlhdGVkIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKTsKKyAgICBQcmVjb25u
ZWN0VG8oVVJMIHVybCwgZW51bTpib29sIFdlYktpdDo6UHJlY29ubmVjdFJlYXNvbiByZWFzb24s
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVy
IHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIFN0cmlu
ZyB1c2VyQWdlbnQsIGVudW06dWludDhfdCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgZW51bTpib29sIHN0ZDo6b3B0aW9uYWw8V2ViS2l0
OjpOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
biwgZW51bTpib29sIFdlYktpdDo6TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgbGFzdE5h
dmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKICAgICBDbGVhclByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VEb21haW4pIC0+ICgpIEFz
eW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RS
ZWFzb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFJlYXNvbi5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjlmOTllYmVlMGRiYmQyODU3MWM3ZmIxMTAyNDEzYTNkOTQzYzFhMmEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RS
ZWFzb24uaApAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitlbnVtIGNsYXNzIFByZWNvbm5lY3RSZWFzb24gOiBib29sIHsK
KyAgICBBUElIaW50LAorICAgIE1haW5SZXNvdXJjZUxvYWQKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25u
ZWN0VGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNr
LmNwcAppbmRleCBjZWFiM2UzNzA5NTk5ODI3YTRiOWJkNTVkODFiMmY0MzgyNmNmODcxLi40NTU3
ODJkNTRhMmVhOWJlZTE4NjUwZTFhZmQxY2Y3YjJjZTk4YzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcApAQCAtNDEsMTMgKzQxLDEzIEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBQcmVjb25uZWN0VGFzazo6UHJlY29ubmVjdFRh
c2soTmV0d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNzaW9uLCBOZXR3b3JrTG9hZFBhcmFtZXRlcnMm
JiBwYXJhbWV0ZXJzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlRXJyb3Im
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpCisgICAgLCBtX3RpbWVvdXQoNjBfcykKICAgICAsIG1fdGlt
ZW91dFRpbWVyKFt0aGlzXSB7IGRpZEZpbmlzaChSZXNvdXJjZUVycm9yIHsgU3RyaW5nKCksIDAs
IG1fbmV0d29ya0xvYWQtPnBhcmFtZXRlcnMoKS5yZXF1ZXN0LnVybCgpLCAiUHJlY29ubmVjdGlv
biB0aW1lZCBvdXQiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OlRpbWVvdXQgfSk7IH0pCiB7CiAg
ICAgUkVMRUFTRV9MT0coTmV0d29yaywgIiVwIC0gUHJlY29ubmVjdFRhc2s6OlByZWNvbm5lY3RU
YXNrKCkiLCB0aGlzKTsKIAogICAgIEFTU0VSVChwYXJhbWV0ZXJzLnNob3VsZFByZWNvbm5lY3RP
bmx5ID09IFByZWNvbm5lY3RPbmx5OjpZZXMpOwogICAgIG1fbmV0d29ya0xvYWQgPSBtYWtlVW5p
cXVlPE5ldHdvcmtMb2FkPigqdGhpcywgbnVsbHB0ciwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbmV0
d29ya1Nlc3Npb24pOwotICAgIG1fdGltZW91dFRpbWVyLnN0YXJ0T25lU2hvdCg2MDAwMF9zKTsK
IH0KIAogdm9pZCBQcmVjb25uZWN0VGFzazo6c2V0SDJQaW5nQ2FsbGJhY2soY29uc3QgVVJMJiB1
cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8V1RGOjpTZWNvbmRzLCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTU1LDggKzU1LDE0
IEBAIHZvaWQgUHJlY29ubmVjdFRhc2s6OnNldEgyUGluZ0NhbGxiYWNrKGNvbnN0IFVSTCYgdXJs
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4CiAgICAgbV9uZXR3b3JrTG9hZC0+c2V0SDJQaW5n
Q2FsbGJhY2sodXJsLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKK3ZvaWQgUHJl
Y29ubmVjdFRhc2s6OnNldFRpbWVvdXQoU2Vjb25kcyB0aW1lb3V0KQoreworICAgIG1fdGltZW91
dCA9IHRpbWVvdXQ7Cit9CisKIHZvaWQgUHJlY29ubmVjdFRhc2s6OnN0YXJ0KCkKIHsKKyAgICBt
X3RpbWVvdXRUaW1lci5zdGFydE9uZVNob3QobV90aW1lb3V0KTsKICAgICBtX25ldHdvcmtMb2Fk
LT5zdGFydCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1ByZWNvbm5lY3RUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5l
Y3RUYXNrLmgKaW5kZXggMTM2MmIwYzYwMThjNDhhMDE3ZmJkNTY2YmRjMzRjNjJiMzYyNTYzZS4u
MWMxZmYxNjQ3MTExYzZmYTg0OTRhZjVjZjBjN2JiZWFhMWIyNjUwMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaApAQCAtNDUsNiArNDUsNyBAQCBw
dWJsaWM6CiAgICAgflByZWNvbm5lY3RUYXNrKCk7CiAKICAgICB2b2lkIHNldEgyUGluZ0NhbGxi
YWNrKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8V1RGOjpTZWNv
bmRzLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPiYmKT4mJik7CisgICAgdm9pZCBzZXRUaW1lb3V0
KFNlY29uZHMpOwogICAgIHZvaWQgc3RhcnQoKTsKIAogcHJpdmF0ZToKQEAgLTYyLDYgKzYzLDcg
QEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrTG9hZD4gbV9uZXR3b3Jr
TG9hZDsKICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKKyAgICBTZWNvbmRzIG1fdGltZW91dDsKICAg
ICBXZWJDb3JlOjpUaW1lciBtX3RpbWVvdXRUaW1lcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDNmMWQ0NjQ4Yjc5NTc1NTQz
Y2U3MzI0MTNhZjExOTI0MGViNjBlMDguLmI3Y2RhOWUyNzRkZTJjY2RjM2QwZjQzZTg3NDA5MTkw
NjBmZTcyMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQpAQCAtMzIzOSw3ICszMjM5LDcgQEAgc3RhdGljIGlubGluZSBPcHRpb25TZXQ8V2Vi
S2l0OjpGaW5kT3B0aW9ucz4gdG9GaW5kT3B0aW9ucyhfV0tGaW5kT3B0aW9ucyB3a0ZpbmQKIC0g
KHZvaWQpX3ByZWNvbm5lY3RUb1NlcnZlcjooTlNVUkwgKil1cmwKIHsKICAgICBUSFJPV19JRl9T
VVNQRU5ERUQ7Ci0gICAgX3BhZ2UtPnByZWNvbm5lY3RUbyh1cmwpOworICAgIF9wYWdlLT5wcmVj
b25uZWN0VG8odXJsLCBXZWJLaXQ6OlByZWNvbm5lY3RSZWFzb246OkFQSUhpbnQpOwogfQogCiAt
IChCT09MKV9jYW5Vc2VDcmVkZW50aWFsU3RvcmFnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggNmY3Y2Fk
MTdlMTFhY2RhYjRjNjkxZDQzNDZjNzRiYzQwNDM3ODVmNi4uNjAxM2JhMDFlZjBiOTlmMmIwOWJk
ZjRkYjllYWRmN2I2YTVlNmI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0xNTE1LDExICsxNTE1LDEx
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0TG9jYWxTdG9yYWdlRGV0YWlscyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzczo6R2V0TG9jYWxTdG9yYWdlT3JpZ2luRGV0YWlscyhzZXNzaW9u
SUQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6cHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFnZVBy
b3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2Vi
UGFnZUlELCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFdlYkNvcmU6
OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzdGQ6Om9w
dGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluLCBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCBsYXN0TmF2aWdhdGlvbldhc0Fw
cEluaXRpYXRlZCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cHJlY29ubmVjdFRvKGNvbnN0
IFVSTCYgdXJsLCBQcmVjb25uZWN0UmVhc29uIHJlYXNvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBXZWJDb3JlOjpT
dG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc3RkOjpvcHRp
b25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbiwgTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgbGFzdE5hdmlnYXRpb25XYXNBcHBJ
bml0aWF0ZWQpCiB7CiAgICAgaWYgKCF1cmwuaXNWYWxpZCgpIHx8ICF1cmwucHJvdG9jb2xJc0lu
SFRUUEZhbWlseSgpKQogICAgICAgICByZXR1cm47Ci0gICAgc2VuZChNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3M6OlByZWNvbm5lY3RUbyhzZXNzaW9uSUQsIHdlYlBhZ2VQcm94eUlELCB3ZWJQYWdl
SUQsIHVybCwgdXNlckFnZW50LCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbiwgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpLCAwKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UHJlY29ubmVjdFRvKHVybCwgcmVhc29u
LCBzZXNzaW9uSUQsIHdlYlBhZ2VQcm94eUlELCB3ZWJQYWdlSUQsIHVzZXJBZ2VudCwgc3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3ksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIGxhc3ROYXZp
Z2F0aW9uV2FzQXBwSW5pdGlhdGVkKSwgMCk7CiB9CiAKIHN0YXRpYyBib29sIGFueVByb2Nlc3NQ
b29sSGFzRm9yZWdyb3VuZFdlYlByb2Nlc3NlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDMzMDkzM2ZlMmM4
ZGQ0YzEyNDNkM2ViN2U3ZTlmMmZkNmFhNWRkNjkuLmRmN2UyNjVhMGM3M2YyMTQ0NmE1ZTIzNjcw
NTBlM2QyZjI4MjUwMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAi
QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eU1l
c3NhZ2VzUmVwbGllcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVy
LmgiCisjaW5jbHVkZSAiUHJlY29ubmVjdFJlYXNvbi5oIgogI2luY2x1ZGUgIlByb2Nlc3NMYXVu
Y2hlci5oIgogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXIuaCIKICNpbmNsdWRlICJQcm9jZXNz
VGhyb3R0bGVyQ2xpZW50LmgiCkBAIC0xMjksNyArMTMwLDcgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBnZXRMb2NhbFN0b3JhZ2VEZXRhaWxzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6Ok9yaWdpbkRldGFpbHM+
JiYpPiYmKTsKIAotICAgIHZvaWQgcHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklELCBXZWJQYWdl
UHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHN0ZDo6b3B0aW9u
YWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRp
YXRlZCk7CisgICAgdm9pZCBwcmVjb25uZWN0VG8oY29uc3QgVVJMJiwgUHJlY29ubmVjdFJlYXNv
biwgUEFMOjpTZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIExhc3ROYXZpZ2F0
aW9uV2FzQXBwSW5pdGlhdGVkKTsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCiAgICAgdm9pZCBjbGVhclByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA0MWU4MjY2ZjcxN2QyNGYz
YmU0NGI1YTJkN2Y3NDVjOTNjMWExYmE5Li42ZWU5MWFlNThlZjgwMGVhMzk4ZjAxYjVlOTRjZDFj
N2Q3NDFkZjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAg
LTE0MDksNyArMTQwOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdpdGhOYXZp
Z2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAKICAgICBhZGRQbGF0
Zm9ybUxvYWRQYXJhbWV0ZXJzKHByb2Nlc3MsIGxvYWRQYXJhbWV0ZXJzKTsKIAotICAgIHByZWNv
bm5lY3RUbyh1cmwpOworICAgIHByZWNvbm5lY3RUbyh1cmwsIFByZWNvbm5lY3RSZWFzb246Ok1h
aW5SZXNvdXJjZUxvYWQpOwogCiAgICAgbmF2aWdhdGlvbi5zZXRJc0xvYWRlZFdpdGhOYXZpZ2F0
aW9uU2hhcmVkKHRydWUpOwogCkBAIC00NTg1LDE0ICs0NTg1LDE0IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpzZXROZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKGJvb2wgbmV0d29ya1JlcXVlc3RzSW5Q
cm9ncmVzcykKICAgICBtX3BhZ2VMb2FkU3RhdGUuc2V0TmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVz
cyh0cmFuc2FjdGlvbiwgbmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyk7CiB9CiAKLXZvaWQgV2Vi
UGFnZVByb3h5OjpwcmVjb25uZWN0VG8oY29uc3QgVVJMJiB1cmwpCit2b2lkIFdlYlBhZ2VQcm94
eTo6cHJlY29ubmVjdFRvKGNvbnN0IFVSTCYgdXJsLCBQcmVjb25uZWN0UmVhc29uIHJlYXNvbikK
IHsKICAgICBpZiAoIW1fd2Vic2l0ZURhdGFTdG9yZS0+Y29uZmlndXJhdGlvbigpLmFsbG93c1Nl
cnZlclByZWNvbm5lY3QoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBzdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSA9IG1fY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UgPyBXZWJDb3JlOjpTdG9y
ZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlIDogV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3k6OkRvTm90VXNlOwogCi0gICAgd2Vic2l0ZURhdGFTdG9yZSgpLm5ldHdvcmtQcm9jZXNzKCku
cHJlY29ubmVjdFRvKHNlc3Npb25JRCgpLCBpZGVudGlmaWVyKCksIHdlYlBhZ2VJRCgpLCB1cmws
IHVzZXJBZ2VudCgpLCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgaXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbigpLCBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkID8gTGFzdE5hdmln
YXRpb25XYXNBcHBJbml0aWF0ZWQ6OlllcyA6IExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVk
OjpObyk7CisgICAgd2Vic2l0ZURhdGFTdG9yZSgpLm5ldHdvcmtQcm9jZXNzKCkucHJlY29ubmVj
dFRvKHVybCwgcmVhc29uLCBzZXNzaW9uSUQoKSwgaWRlbnRpZmllcigpLCB3ZWJQYWdlSUQoKSwg
dXNlckFnZW50KCksIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBpc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluKCksIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgPyBMYXN0TmF2aWdh
dGlvbldhc0FwcEluaXRpYXRlZDo6WWVzIDogTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6
Ok5vKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldENhblVzZUNyZWRlbnRpYWxTdG9yYWdl
KGJvb2wgY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCmluZGV4IGYyNGMwMzA3MzFjYTdkM2EyMzk4MDk3NTM3ZjBjNzNkNDRjMWNjYjAu
LmRiZDI4NjgxOTk0MjA5MmYwOTM5ZjJlOTY5MzM1YTc0YzFmZmMxMzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiUGFz
dGVib2FyZEFjY2Vzc0ludGVudC5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NBdHRyaWJ1dGVz
LmgiCiAjaW5jbHVkZSAiUG9saWN5RGVjaXNpb24uaCIKKyNpbmNsdWRlICJQcmVjb25uZWN0UmVh
c29uLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmgiCiAjaW5jbHVkZSAi
UHJvY2Vzc1Rocm90dGxlci5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKQEAgLTE4
ODEsNyArMTg4Miw3IEBAIHB1YmxpYzoKIAogICAgIFdlYlBvcHVwTWVudVByb3h5KiBhY3RpdmVQ
b3B1cE1lbnUoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZVBvcHVwTWVudS5nZXQoKTsgfQogCi0g
ICAgdm9pZCBwcmVjb25uZWN0VG8oY29uc3QgVVJMJik7CisgICAgdm9pZCBwcmVjb25uZWN0VG8o
Y29uc3QgVVJMJiwgUHJlY29ubmVjdFJlYXNvbik7CiAKICAgICBib29sIGNhblVzZUNyZWRlbnRp
YWxTdG9yYWdlKCkgeyByZXR1cm4gbV9jYW5Vc2VDcmVkZW50aWFsU3RvcmFnZTsgfQogICAgIHZv
aWQgc2V0Q2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5ZTQxNmVmMzc0NDRlNDJlYmU2
OGMwZTEwMDI0YmNlY2ZmYjI3Zjg4Li4wYTEwNTg3OWIzYmNhMWZiZDFmOTNiODFhNWRkYzA2ZjBj
MjkyODEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTYwMDUsNiArNjAwNSw3IEBACiAJCUU1QkVGNjgxMjEzMEM0N0YwMEYzMTExMSAv
KiBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1Mu
bW07IHBhdGggPSBpb3MvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNUNCMDdEQTIwRTE2NzhGMDAyMkMxODMgLyogV0tG
b3JtQ29sb3JDb250cm9sLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLRm9ybUNvbG9yQ29udHJvbC5oOyBw
YXRoID0gaW9zL2Zvcm1zL1dLRm9ybUNvbG9yQ29udHJvbC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFNUNCMDdEQjIwRTE2NzhGMDAyMkMxODMgLyogV0tGb3JtQ29sb3JDb250cm9s
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tGb3JtQ29sb3JDb250cm9sLm1tOyBwYXRoID0g
aW9zL2Zvcm1zL1dLRm9ybUNvbG9yQ29udHJvbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRUI5NTE0NzIyNkRERDdDNjAwMTEzM0FBIC8qIFByZWNvbm5lY3RSZWFzb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJlY29ubmVjdFJlYXNvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFQ0E2ODBEMzFFNjkwNEI1MDA3MzFEMjAgLyogRXh0cmFQ
cml2YXRlU3ltYm9sc0ZvclRBUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RXh0cmFQcml2YXRlU3ltYm9sc0ZvclRBUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRUNCRkMxREIxRTZBNEQ2NjAwMDMwMEM3IC8qIEV4dHJhUHVibGljU3ltYm9sc0ZvclRBUEku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRXh0cmFQdWJsaWNTeW1ib2xzRm9yVEFQSS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGMDM2OTc4NzE1RjRCRjA1MDBDM0E4MEUgLyogV2ViQ29sb3JQ
aWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29sb3JQ
aWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODc1MCw2ICs4NzUxLDcg
QEAKIAkJCQk1MTgzMjQ3QTI2MTY4Njc1MDAzRjIzOUUgLyogTmV0d29ya1VSTFNjaGVtZVRhc2su
aCAqLywKIAkJCQk0NjIxMDdENzFGMzhEQkQzMDBERDc4MTAgLyogUGluZ0xvYWQuY3BwICovLAog
CQkJCTVDRTg1QjFGMUM4OEU2NDMwMDcwQkZDRSAvKiBQaW5nTG9hZC5oICovLAorCQkJCUVCOTUx
NDcyMjZEREQ3QzYwMDExMzNBQSAvKiBQcmVjb25uZWN0UmVhc29uLmggKi8sCiAJCQkJODNBMEVE
MzMxRjc0N0NDNzAwMzI5OUVCIC8qIFByZWNvbm5lY3RUYXNrLmNwcCAqLywKIAkJCQk4M0EwRUQz
MjFGNzQ3Q0M2MDAzMjk5RUIgLyogUHJlY29ubmVjdFRhc2suaCAqLywKIAkJCQk2QkQwNTg2NDIy
MENFOEMyMDAwQkVENUMgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcCAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437645</attachid>
            <date>2021-09-08 10:21:13 -0700</date>
            <delta_ts>2021-09-09 17:28:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229686-20210908102112.patch</filename>
            <type>text/plain</type>
            <size>16073</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDYxZjdhZDFjYTg4N2Q1YmZk
MjEyZjQzOTNkMGM1MmFlYWFjMGI1N2IuLjRlZDhmNWVlODk4YzAyN2Q0OTgzNmUxMzY0MTg0MzIw
Njc5OWU1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMjEtMDktMDggIEJlbiBOaGFt
ICA8bmhhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUHJlY29ubmVjdGVkIHNvY2tldCBpcyBzb21l
dGltZXMgbm90IHVzZWQgZm9yIGluaXRpYWwgcmVxdWVzdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5Njg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gdGhlIHByZXZpb3VzIHJlbGVhc2UsIHdlIHBy
ZWNvbm5lY3RlZCB0byB0aGUgbWFpbiByZXNvdXJjZSBvcmlnaW4gZWFybHkgaW4gcGFnZSBsb2Fk
IGZyb20KKyAgICAgICAgVUlQcm9jZXNzIHRvIHNhdmUgfjEwLTE1IG1zIHBlciBwYWdlIGxvYWQg
KGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQ5OTIpLgorICAgICAg
ICBUaGUgc2F2aW5ncyBjb21lcyBmcm9tIHRoZSBmYWN0IHRoYXQgdGhlcmUncyBzb21lIGxhdGVu
Y3kgaW4gaW5pdGlhdGluZyB0aGUgcmVxdWVzdCBpbgorICAgICAgICBXZWJQcm9jZXNzIGFuZCB3
YWl0aW5nIGZvciB0aGUgbmF2IGRlbGVnYXRlIHJlcGx5IGluIFVJUHJvY2Vzcy4gV2UgaGlkZSB0
aGF0IGxhdGVuY3kgYnkKKyAgICAgICAgaGF2aW5nIHRoZSBldmVudHVhbCBtYWluIHJlc291cmNl
IHJlcXVlc3QgcmV1c2UgdGhlIGVhcmx5IHByZWNvbm5lY3RlZCBzb2NrZXQuCisKKyAgICAgICAg
SG93ZXZlciwgdGhpcyBvcHRpbWl6YXRpb24gZG9lc24ndCB3b3JrIGZvciBjb25uZWN0aW9ucyB0
byBrbm93biBIVFRQLzEuMSBvcmlnaW5zIGR1ZSB0bworICAgICAgICBDRk5ldHdvcmsncyBpbi1t
ZW1vcnkgY2FjaGUgb2Yga25vd24gSFRUUC8xLjEgb3JpZ2lucy4gSWYgYW4gb3JpZ2luIGlzIGlu
IHRoaXMgY2FjaGUsIGFuZAorICAgICAgICBhIHByZWNvbm5lY3QgaXMgc3RpbGwgaW4gZmxpZ2h0
LCB0aGVuIHRoZSBuZXR3b3JrIHN0YWNrIHdpbGwgZ28gd2lkZSBpbW1lZGlhdGVseSBhbmQgaXNz
dWUKKyAgICAgICAgdGhlIG1haW4gcmVzb3VyY2UgcmVxdWVzdCBvbiBhIG5ldyBzb2NrZXQgcmF0
aGVyIHRoYW4gdHJ5aW5nIHRvIHdhaXQgZm9yIHRoZSBwcmVjb25uZWN0IHRvCisgICAgICAgIGZp
bmlzaCBhbmQgcmV1c2UgdGhlIHByZWNvbm5lY3RlZCBzb2NrZXQuIFRodXMgdGhlIHByZWNvbm5l
dGVkIHNvY2tldCBqdXN0IGdvZXMgdG8gd2FzdGUuCisgICAgICAgIFRoaXMgY2FuIGFsc28gY2F1
c2UgaXNzdWVzIHdpdGggc2luZ2xlLXRocmVhZGVkIHdlYiBzZXJ2ZXJzIHRoYXQgc2VydmUgb25s
eSBvbmUgcmVxdWVzdCBhdAorICAgICAgICBhIHRpbWUsIGFzIHRoZSBtYWluIHJlc291cmNlIHJl
cXVlc3QgY2FuIGdldCBoZWFkLW9mLWxpbmUgYmxvY2tlZCBieSB0aGUgcHJlY29ubmVjdCB0aGF0
CisgICAgICAgIGlzIHdhc3RlZC4KKworICAgICAgICBUbyB3b3JrIGFyb3VuZCB0aGlzLCB0aGlz
IHBhdGNoIHRyYWNrcyBhIHNtYWxsIG51bWJlciBvZiBrbm93biBIVFRQLzEuMSBvcmlnaW5zIGlu
IG1lbW9yeS4KKyAgICAgICAgSWYgdGhlcmUgaXMgYSBwZW5kaW5nIHByZWNvbm5lY3QgdG8gYW4g
SFRUUC8xLjEgb3JpZ2luIGFuZCBhIG1haW4gcmVzb3VyY2UgcmVxdWVzdCB0byB0aGF0CisgICAg
ICAgIG9yaWdpbiBjb21lcyBpbiwgdGhlbiB3ZSBibG9jayB0aGUgcmVxdWVzdCBmcm9tIGdvaW5n
IG91dCB1bnRpbCB0aGUgcHJlY29ubmVjdCBmaW5pc2hlcy4KKyAgICAgICAgVGhpcyBhbGxvd3Mg
dGhlIG1haW4gcmVzb3VyY2UgcmVxdWVzdCB0byB1dGlsaXplIHRoZSBwcmVjb25uZWN0ZWQgc29j
a2V0LgorCisgICAgICAgIFRoaXMgaXMgd29ydGggfjEuMjUlLTIuNSUgb24gUExUNSBkZXBlbmRp
bmcgb24gZGV2aWNlLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkQ29tcGxldGVXaXRoRXJyb3IpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkU2NoZWR1bGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0xvYWRTY2hlZHVsZXI6OnNjaGVkdWxlKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0xvYWRTY2hlZHVsZXI6OnVuc2NoZWR1bGUpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVMb2FkKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0xvYWRTY2hlZHVsZXI6OnVuc2NoZWR1bGVMb2FkKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0xvYWRTY2hlZHVsZXI6OnNjaGVkdWxlTWFpblJlc291cmNlTG9hZCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtMb2FkU2NoZWR1bGVyOjp1bnNjaGVkdWxlTWFpblJlc291cmNlTG9h
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkU2NoZWR1bGVyOjpzdGFydGVkUHJlY29u
bmVjdEZvck1haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkU2NoZWR1
bGVyOjpmaW5pc2hlZFByZWNvbm5lY3RGb3JNYWluUmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrTG9hZFNjaGVkdWxlcjo6bWF5YmVQcnVuZVByZWNvbm5lY3RJbmZvKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0xvYWRTY2hlZHVsZXI6OmlzT3JpZ2luSFRUUDFYKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0xvYWRTY2hlZHVsZXI6OnVwZGF0ZU9yaWdpblByb3RvY29sSW5m
byk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRTY2hlZHVsZXIuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcmVjb25uZWN0VG8pOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1ByZWNvbm5lY3RUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJlY29ubmVjdFRhc2s6
OlByZWNvbm5lY3RUYXNrKToKKyAgICAgICAgKFdlYktpdDo6UHJlY29ubmVjdFRhc2s6OnNldFRp
bWVvdXQpOgorICAgICAgICAoV2ViS2l0OjpQcmVjb25uZWN0VGFzazo6c3RhcnQpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmg6CisKIDIwMjEtMDgtMjYgIERhcmlu
IEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEN1dCBkb3duIG9uIHVzZSBvZiBD
RkdldFR5cGVJRCwgdXNpbmcgZHluYW1pY19jZl9jYXN0IGluc3RlYWQ7IHJlbGF0ZWQgc3RyZWFt
bGluaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCmlu
ZGV4IDNlNzMxMTE3MWE5NDBiNDQ5M2VkNDZhMWZlZDA2YjY2ZmMwYjYxZDAuLjJhYTAzNzcyZmE1
OWI4YjNlODI0NjY3ODBhMzViZmU2NGIxMjBkZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCkBAIC0yNDUsNyArMjQ1LDcgQEAgdm9pZCBOZXR3b3Jr
TG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB2b2lkIE5l
dHdvcmtMb2FkOjpkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
ciwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3Mp
CiB7CiAgICAgaWYgKG1fc2NoZWR1bGVyKSB7Ci0gICAgICAgIG1fc2NoZWR1bGVyLT51bnNjaGVk
dWxlKCp0aGlzKTsKKyAgICAgICAgbV9zY2hlZHVsZXItPnVuc2NoZWR1bGUoKnRoaXMsICZuZXR3
b3JrTG9hZE1ldHJpY3MpOwogICAgICAgICBtX3NjaGVkdWxlciA9IG51bGxwdHI7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkU2No
ZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRTY2hl
ZHVsZXIuY3BwCmluZGV4IDFlNDgwZjU0YTJhZTY5NzMxZTc1MzYzN2JmMDhkMzAxNDIzYzcyZWYu
Ljc4ODRjZDc0YzNmMDczM2ViZDI1ZDNlZDZiOTZkNzM1YzgxMDBhYzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRTY2hlZHVsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRTY2hlZHVsZXIuY3BwCkBA
IC0yNiwxMiArMjYsMTQgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3b3Jr
TG9hZFNjaGVkdWxlci5oIgogCisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdv
cmtMb2FkLmgiCi0jaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZUVycm9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdGF0aWMgY29uc3Rl
eHByIHNpemVfdCBtYXhpbXVtQWN0aXZlQ291bnRGb3JMb3dQcmlvcml0eSA9IDI7CitzdGF0aWMg
Y29uc3RleHByIHNpemVfdCBtYXhpbXVtVHJhY2tlZEhUVFAxWE9yaWdpbnMgPSAxMjg7CiAKIGNs
YXNzIE5ldHdvcmtMb2FkU2NoZWR1bGVyOjpIb3N0Q29udGV4dCB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CkBAIC0xMTYsNiArMTE4LDI0IEBAIE5ldHdvcmtMb2FkU2NoZWR1bGVyOjpO
ZXR3b3JrTG9hZFNjaGVkdWxlcigpID0gZGVmYXVsdDsKIE5ldHdvcmtMb2FkU2NoZWR1bGVyOjp+
TmV0d29ya0xvYWRTY2hlZHVsZXIoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgTmV0d29ya0xvYWRTY2hl
ZHVsZXI6OnNjaGVkdWxlKE5ldHdvcmtMb2FkJiBsb2FkKQoreworICAgIGJvb2wgaXNNYWluRnJh
bWVNYWluUmVzb3VyY2UgPSBsb2FkLmN1cnJlbnRSZXF1ZXN0KCkuaXNUb3BTaXRlKCk7CisgICAg
aWYgKGlzTWFpbkZyYW1lTWFpblJlc291cmNlKQorICAgICAgICBzY2hlZHVsZU1haW5SZXNvdXJj
ZUxvYWQobG9hZCk7CisgICAgZWxzZQorICAgICAgICBzY2hlZHVsZUxvYWQobG9hZCk7Cit9CisK
K3ZvaWQgTmV0d29ya0xvYWRTY2hlZHVsZXI6OnVuc2NoZWR1bGUoTmV0d29ya0xvYWQmIGxvYWQs
IGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyogbWV0cmljcykKK3sKKyAgICBib29s
IGlzTWFpbkZyYW1lTWFpblJlc291cmNlID0gbG9hZC5jdXJyZW50UmVxdWVzdCgpLmlzVG9wU2l0
ZSgpOworICAgIGlmIChpc01haW5GcmFtZU1haW5SZXNvdXJjZSkKKyAgICAgICAgdW5zY2hlZHVs
ZU1haW5SZXNvdXJjZUxvYWQobG9hZCwgbWV0cmljcyk7CisgICAgZWxzZQorICAgICAgICB1bnNj
aGVkdWxlTG9hZChsb2FkKTsKK30KKwordm9pZCBOZXR3b3JrTG9hZFNjaGVkdWxlcjo6c2NoZWR1
bGVMb2FkKE5ldHdvcmtMb2FkJiBsb2FkKQogewogICAgIGF1dG8qIGNvbnRleHQgPSBjb250ZXh0
Rm9yTG9hZChsb2FkKTsKIApAQCAtMTI3LDEyICsxNDcsMTA5IEBAIHZvaWQgTmV0d29ya0xvYWRT
Y2hlZHVsZXI6OnNjaGVkdWxlKE5ldHdvcmtMb2FkJiBsb2FkKQogICAgIGNvbnRleHQtPnNjaGVk
dWxlKGxvYWQpOwogfQogCi12b2lkIE5ldHdvcmtMb2FkU2NoZWR1bGVyOjp1bnNjaGVkdWxlKE5l
dHdvcmtMb2FkJiBsb2FkKQordm9pZCBOZXR3b3JrTG9hZFNjaGVkdWxlcjo6dW5zY2hlZHVsZUxv
YWQoTmV0d29ya0xvYWQmIGxvYWQpCiB7CiAgICAgaWYgKGF1dG8qIGNvbnRleHQgPSBjb250ZXh0
Rm9yTG9hZChsb2FkKSkKICAgICAgICAgY29udGV4dC0+dW5zY2hlZHVsZShsb2FkKTsKIH0KIAor
dm9pZCBOZXR3b3JrTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVNYWluUmVzb3VyY2VMb2FkKE5ldHdv
cmtMb2FkJiBsb2FkKQoreworICAgIFN0cmluZyBwcm90b2NvbEhvc3RBbmRQb3J0ID0gbG9hZC51
cmwoKS5wcm90b2NvbEhvc3RBbmRQb3J0KCk7CisgICAgaWYgKCFpc09yaWdpbkhUVFAxWChwcm90
b2NvbEhvc3RBbmRQb3J0KSkgeworICAgICAgICBsb2FkLnN0YXJ0KCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBhdXRvIGl0ZXIgPSBtX3BlbmRpbmdNYWluUmVzb3VyY2VQcmVjb25u
ZWN0cy5maW5kKHByb3RvY29sSG9zdEFuZFBvcnQpOworICAgIGlmIChpdGVyID09IG1fcGVuZGlu
Z01haW5SZXNvdXJjZVByZWNvbm5lY3RzLmVuZCgpKSB7CisgICAgICAgIGxvYWQuc3RhcnQoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFBlbmRpbmdNYWluUmVzb3VyY2VQcmVjb25u
ZWN0SW5mbyYgaW5mbyA9IGl0ZXItPnZhbHVlOworICAgIGlmICghaW5mby5wZW5kaW5nUHJlY29u
bmVjdHMpIHsKKyAgICAgICAgbG9hZC5zdGFydCgpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgLS1pbmZvLnBlbmRpbmdQcmVjb25uZWN0czsKKyAgICBpbmZvLnBlbmRpbmdMb2Fkcy5h
ZGQoJmxvYWQpOworICAgIFJFTEVBU0VfTE9HKE5ldHdvcmssICIlcCAtIE5ldHdvcmtMb2FkU2No
ZWR1bGVyOjpzY2hlZHVsZU1haW5SZXNvdXJjZUxvYWQgZGVmZXJyaW5nIGxvYWQgJXA7ICV1IHBl
bmRpbmcgcHJlY29ubmVjdHM7ICV1IHBlbmRpbmcgbG9hZHMiLCB0aGlzLCAmbG9hZCwgaW5mby5w
ZW5kaW5nUHJlY29ubmVjdHMsIGluZm8ucGVuZGluZ0xvYWRzLnNpemUoKSk7Cit9CisKK3ZvaWQg
TmV0d29ya0xvYWRTY2hlZHVsZXI6OnVuc2NoZWR1bGVNYWluUmVzb3VyY2VMb2FkKE5ldHdvcmtM
b2FkJiBsb2FkLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MqIG1ldHJpY3MpCit7
CisgICAgU3RyaW5nIHByb3RvY29sSG9zdEFuZFBvcnQgPSBsb2FkLnVybCgpLnByb3RvY29sSG9z
dEFuZFBvcnQoKTsKKworICAgIGlmIChtZXRyaWNzKQorICAgICAgICB1cGRhdGVPcmlnaW5Qcm90
b2NvbEluZm8ocHJvdG9jb2xIb3N0QW5kUG9ydCwgbWV0cmljcy0+cHJvdG9jb2wpOworCisgICAg
YXV0byBpdGVyID0gbV9wZW5kaW5nTWFpblJlc291cmNlUHJlY29ubmVjdHMuZmluZChwcm90b2Nv
bEhvc3RBbmRQb3J0KTsKKyAgICBpZiAoaXRlciA9PSBtX3BlbmRpbmdNYWluUmVzb3VyY2VQcmVj
b25uZWN0cy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUGVuZGluZ01haW5SZXNvdXJj
ZVByZWNvbm5lY3RJbmZvJiBpbmZvID0gaXRlci0+dmFsdWU7CisgICAgaWYgKGluZm8ucGVuZGlu
Z0xvYWRzLnJlbW92ZSgmbG9hZCkpCisgICAgICAgIG1heWJlUHJ1bmVQcmVjb25uZWN0SW5mbyhp
dGVyKTsKK30KKwordm9pZCBOZXR3b3JrTG9hZFNjaGVkdWxlcjo6c3RhcnRlZFByZWNvbm5lY3RG
b3JNYWluUmVzb3VyY2UoY29uc3QgVVJMJiB1cmwpCit7CisgICAgYXV0byBpdGVyID0gbV9wZW5k
aW5nTWFpblJlc291cmNlUHJlY29ubmVjdHMuZmluZCh1cmwucHJvdG9jb2xIb3N0QW5kUG9ydCgp
KTsKKyAgICBpZiAoaXRlciAhPSBtX3BlbmRpbmdNYWluUmVzb3VyY2VQcmVjb25uZWN0cy5lbmQo
KSkgeworICAgICAgICBQZW5kaW5nTWFpblJlc291cmNlUHJlY29ubmVjdEluZm8mIGluZm8gPSBp
dGVyLT52YWx1ZTsKKyAgICAgICAgaW5mby5wZW5kaW5nUHJlY29ubmVjdHMrKzsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIFBlbmRpbmdNYWluUmVzb3VyY2VQcmVjb25uZWN0SW5mbyBp
bmZvOworICAgIG1fcGVuZGluZ01haW5SZXNvdXJjZVByZWNvbm5lY3RzLmFkZCh1cmwucHJvdG9j
b2xIb3N0QW5kUG9ydCgpLCBXVEZNb3ZlKGluZm8pKTsKK30KKwordm9pZCBOZXR3b3JrTG9hZFNj
aGVkdWxlcjo6ZmluaXNoZWRQcmVjb25uZWN0Rm9yTWFpblJlc291cmNlKGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBhdXRvIGl0ZXIg
PSBtX3BlbmRpbmdNYWluUmVzb3VyY2VQcmVjb25uZWN0cy5maW5kKHVybC5wcm90b2NvbEhvc3RB
bmRQb3J0KCkpOworICAgIGlmIChpdGVyID09IG1fcGVuZGluZ01haW5SZXNvdXJjZVByZWNvbm5l
Y3RzLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBQZW5kaW5nTWFpblJlc291cmNlUHJl
Y29ubmVjdEluZm8mIGluZm8gPSBpdGVyLT52YWx1ZTsKKyAgICBpZiAoIWluZm8ucGVuZGluZ0xv
YWRzLmlzRW1wdHkoKSkgeworICAgICAgICBOZXR3b3JrTG9hZCogbG9hZCA9IGluZm8ucGVuZGlu
Z0xvYWRzLnRha2VGaXJzdCgpOworICAgICAgICBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBO
ZXR3b3JrTG9hZFNjaGVkdWxlcjo6ZmluaXNoZWRQcmVjb25uZWN0Rm9yTWFpblJlc291cmNlIChl
cnJvcjogJWQpIHN0YXJ0aW5nIGRlbGF5ZWQgbWFpbiByZXNvdXJjZSBsb2FkICVwOyAldSBwZW5k
aW5nIHByZWNvbm5lY3RzOyAldSB0b3RhbCBwZW5kaW5nIGxvYWRzIiwgdGhpcywgc3RhdGljX2Nh
c3Q8aW50PihlcnJvci50eXBlKCkpLCBsb2FkLCBpbmZvLnBlbmRpbmdQcmVjb25uZWN0cywgaW5m
by5wZW5kaW5nTG9hZHMuc2l6ZSgpKTsKKyAgICAgICAgbG9hZC0+c3RhcnQoKTsKKyAgICB9IGVs
c2UKKyAgICAgICAgLS1pbmZvLnBlbmRpbmdQcmVjb25uZWN0czsKKworICAgIG1heWJlUHJ1bmVQ
cmVjb25uZWN0SW5mbyhpdGVyKTsKK30KKwordm9pZCBOZXR3b3JrTG9hZFNjaGVkdWxlcjo6bWF5
YmVQcnVuZVByZWNvbm5lY3RJbmZvKFBlbmRpbmdQcmVjb25uZWN0TWFwOjppdGVyYXRvciYgaXRl
cikKK3sKKyAgICBQZW5kaW5nTWFpblJlc291cmNlUHJlY29ubmVjdEluZm8mIGluZm8gPSBpdGVy
LT52YWx1ZTsKKyAgICBpZiAoIWluZm8ucGVuZGluZ1ByZWNvbm5lY3RzICYmIGluZm8ucGVuZGlu
Z0xvYWRzLmlzRW1wdHkoKSkKKyAgICAgICAgbV9wZW5kaW5nTWFpblJlc291cmNlUHJlY29ubmVj
dHMucmVtb3ZlKGl0ZXIpOworfQorCisKK2Jvb2wgTmV0d29ya0xvYWRTY2hlZHVsZXI6OmlzT3Jp
Z2luSFRUUDFYKGNvbnN0IFN0cmluZyYgcHJvdG9jb2xIb3N0QW5kUG9ydCkKK3sKKyAgICByZXR1
cm4gbV9odHRwMVhPcmlnaW5zLmNvbnRhaW5zKHByb3RvY29sSG9zdEFuZFBvcnQpOworfQorCit2
b2lkIE5ldHdvcmtMb2FkU2NoZWR1bGVyOjp1cGRhdGVPcmlnaW5Qcm90b2NvbEluZm8oY29uc3Qg
U3RyaW5nJiBwcm90b2NvbEhvc3RBbmRQb3J0LCBjb25zdCBTdHJpbmcmIGFscG5Qcm90b2NvbElE
KQoreworICAgIGlmIChhbHBuUHJvdG9jb2xJRCAhPSAiaHR0cC8xLjEiX3MpIHsKKyAgICAgICAg
bV9odHRwMVhPcmlnaW5zLnJlbW92ZShwcm90b2NvbEhvc3RBbmRQb3J0KTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGlmIChtX2h0dHAxWE9yaWdpbnMuc2l6ZSgpID49IG1heGltdW1U
cmFja2VkSFRUUDFYT3JpZ2lucykKKyAgICAgICAgbV9odHRwMVhPcmlnaW5zLnJlbW92ZShtX2h0
dHAxWE9yaWdpbnMucmFuZG9tKCkpOworCisgICAgbV9odHRwMVhPcmlnaW5zLmFkZChwcm90b2Nv
bEhvc3RBbmRQb3J0KTsKK30KKwogdm9pZCBOZXR3b3JrTG9hZFNjaGVkdWxlcjo6c2V0UmVzb3Vy
Y2VMb2FkU2NoZWR1bGluZ01vZGUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlkZW50aWZp
ZXIsIFdlYkNvcmU6OkxvYWRTY2hlZHVsaW5nTW9kZSBtb2RlKQogewogICAgIHN3aXRjaCAobW9k
ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZFNjaGVkdWxlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFNj
aGVkdWxlci5oCmluZGV4IDI5OWM4MWFjMzI4OWY4OWY3NTRhNmM2ZDE5MzMxOTc4YzJiMjY3OTIu
LmUwODBhMThkMmYwMmUyODY3OWZiNDQ2ZDFhOTdhNGI2NGQ4Y2U4MmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRTY2hlZHVsZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkU2NoZWR1bGVyLmgKQEAgLTI2
LDEwICsyNiwxNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxXZWJDb3JlL0xvYWRTY2hl
ZHVsaW5nTW9kZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRNZXRyaWNzLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQu
aD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFz
cyBSZXNvdXJjZUVycm9yOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0d29y
a0xvYWQ7CkBAIC00MSwxOCArNDgsNDEgQEAgcHVibGljOgogICAgIH5OZXR3b3JrTG9hZFNjaGVk
dWxlcigpOwogCiAgICAgdm9pZCBzY2hlZHVsZShOZXR3b3JrTG9hZCYpOwotICAgIHZvaWQgdW5z
Y2hlZHVsZShOZXR3b3JrTG9hZCYpOworICAgIHZvaWQgdW5zY2hlZHVsZShOZXR3b3JrTG9hZCYs
IGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyogPSBudWxscHRyKTsKKworICAgIHZv
aWQgc3RhcnRlZFByZWNvbm5lY3RGb3JNYWluUmVzb3VyY2UoY29uc3QgVVJMJik7CisgICAgdm9p
ZCBmaW5pc2hlZFByZWNvbm5lY3RGb3JNYWluUmVzb3VyY2UoY29uc3QgVVJMJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpOwogCiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTY2hlZHVs
aW5nTW9kZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6TG9hZFNjaGVkdWxpbmdN
b2RlKTsKICAgICB2b2lkIHByaW9yaXRpemVMb2Fkcyhjb25zdCBWZWN0b3I8TmV0d29ya0xvYWQq
PiYpOwogICAgIHZvaWQgY2xlYXJQYWdlRGF0YShXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAK
IHByaXZhdGU6CisgICAgdm9pZCBzY2hlZHVsZUxvYWQoTmV0d29ya0xvYWQmKTsKKyAgICB2b2lk
IHVuc2NoZWR1bGVMb2FkKE5ldHdvcmtMb2FkJik7CisKKyAgICB2b2lkIHNjaGVkdWxlTWFpblJl
c291cmNlTG9hZChOZXR3b3JrTG9hZCYpOworICAgIHZvaWQgdW5zY2hlZHVsZU1haW5SZXNvdXJj
ZUxvYWQoTmV0d29ya0xvYWQmLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MqKTsK
KworICAgIGJvb2wgaXNPcmlnaW5IVFRQMVgoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCB1cGRh
dGVPcmlnaW5Qcm90b2NvbEluZm8oY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CisKICAg
ICBjbGFzcyBIb3N0Q29udGV4dDsKICAgICBIb3N0Q29udGV4dCogY29udGV4dEZvckxvYWQoY29u
c3QgTmV0d29ya0xvYWQmKTsKIAogICAgIHVzaW5nIFBhZ2VDb250ZXh0ID0gSGFzaE1hcDxTdHJp
bmcsIHN0ZDo6dW5pcXVlX3B0cjxIb3N0Q29udGV4dD4+OwogICAgIEhhc2hNYXA8V2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxQYWdlQ29udGV4dD4+IG1fcGFnZUNvbnRl
eHRzOworCisgICAgc3RydWN0IFBlbmRpbmdNYWluUmVzb3VyY2VQcmVjb25uZWN0SW5mbyB7Cisg
ICAgICAgIHVuc2lnbmVkIHBlbmRpbmdQcmVjb25uZWN0cyB7MX07CisgICAgICAgIExpc3RIYXNo
U2V0PE5ldHdvcmtMb2FkICo+IHBlbmRpbmdMb2FkczsKKyAgICB9OworICAgIHVzaW5nIFBlbmRp
bmdQcmVjb25uZWN0TWFwID0gSGFzaE1hcDxTdHJpbmcsIFBlbmRpbmdNYWluUmVzb3VyY2VQcmVj
b25uZWN0SW5mbz47CisgICAgUGVuZGluZ1ByZWNvbm5lY3RNYXAgbV9wZW5kaW5nTWFpblJlc291
cmNlUHJlY29ubmVjdHM7CisKKyAgICB2b2lkIG1heWJlUHJ1bmVQcmVjb25uZWN0SW5mbyhQZW5k
aW5nUHJlY29ubmVjdE1hcDo6aXRlcmF0b3ImKTsKKworICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2h0
dHAxWE9yaWdpbnM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDc0NmJkYzZlZmE5ODkyZDY1OGE4YThiMWY3ZWMwYjZk
M2UzYTZjNmUuLmUzZTFjY2FlZjY3ZmE4NmQyNWU0ZDI4M2ViOWIxNTMyODNhZDFlMmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0x
MzgyLDYgKzEzODIsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVjb25uZWN0VG8oUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaQogICAgIHBhcmFtZXRlcnMu
cmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCB7IHVybCB9OwogICAgIHBhcmFtZXRlcnMucmVxdWVz
dC5zZXRJc0FwcEluaXRpYXRlZChsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCA9PSBMYXN0
TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDo6WWVzKTsKICAgICBwYXJhbWV0ZXJzLnJlcXVlc3Qu
c2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXModXJsKTsKKyAgICBwYXJhbWV0ZXJzLnJlcXVlc3Quc2V0
UHJpb3JpdHkoV2ViQ29yZTo6UmVzb3VyY2VMb2FkUHJpb3JpdHk6OlZlcnlIaWdoKTsKICAgICBw
YXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlEID0gd2ViUGFnZVByb3h5SUQ7CiAgICAgcGFyYW1ldGVy
cy53ZWJQYWdlSUQgPSB3ZWJQYWdlSUQ7CiAgICAgcGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluID0gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKQEAgLTEzOTMsNyAr
MTM5NCwxMiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaQogICAgIHBhcmFtZXRlcnMuc3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3kgPSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeTsKICAgICBwYXJhbWV0
ZXJzLnNob3VsZFByZWNvbm5lY3RPbmx5ID0gUHJlY29ubmVjdE9ubHk6OlllczsKIAotICAgIChu
ZXcgUHJlY29ubmVjdFRhc2soKm5ldHdvcmtTZXNzaW9uLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBb
XShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgeyB9KSktPnN0YXJ0KCk7CisgICAgbmV0
d29ya1Nlc3Npb24tPm5ldHdvcmtMb2FkU2NoZWR1bGVyKCkuc3RhcnRlZFByZWNvbm5lY3RGb3JN
YWluUmVzb3VyY2UodXJsKTsKKyAgICBhdXRvIHRhc2sgPSBuZXcgUHJlY29ubmVjdFRhc2soKm5l
dHdvcmtTZXNzaW9uLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbbmV0d29ya1Nlc3Npb24sIHVybF0o
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpIHsKKyAgICAgICAgbmV0d29ya1Nl
c3Npb24tPm5ldHdvcmtMb2FkU2NoZWR1bGVyKCkuZmluaXNoZWRQcmVjb25uZWN0Rm9yTWFpblJl
c291cmNlKHVybCwgZXJyb3IpOworICAgIH0pOworICAgIHRhc2stPnNldFRpbWVvdXQoMTBfcyk7
CisgICAgdGFzay0+c3RhcnQoKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHVybCk7CiAgICAg
VU5VU0VEX1BBUkFNKHVzZXJBZ2VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUHJlY29ubmVjdFRhc2suY3BwCmluZGV4IGNlYWIzZTM3MDk1OTk4MjdhNGI5YmQ1NWQ4MWIy
ZjQzODI2Y2Y4NzEuLjQ1NTc4MmQ1NGEyZWE5YmVlMTg2NTBlMWFmZDFjZjdiMmNlOThjNDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCkBA
IC00MSwxMyArNDEsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFByZWNvbm5lY3RU
YXNrOjpQcmVjb25uZWN0VGFzayhOZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24sIE5ldHdv
cmtMb2FkUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgUmVzb3VyY2VFcnJvciYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIDogbV9jb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAsIG1fdGltZW91dCg2
MF9zKQogICAgICwgbV90aW1lb3V0VGltZXIoW3RoaXNdIHsgZGlkRmluaXNoKFJlc291cmNlRXJy
b3IgeyBTdHJpbmcoKSwgMCwgbV9uZXR3b3JrTG9hZC0+cGFyYW1ldGVycygpLnJlcXVlc3QudXJs
KCksICJQcmVjb25uZWN0aW9uIHRpbWVkIG91dCJfcywgUmVzb3VyY2VFcnJvcjo6VHlwZTo6VGlt
ZW91dCB9KTsgfSkKIHsKICAgICBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBQcmVjb25uZWN0
VGFzazo6UHJlY29ubmVjdFRhc2soKSIsIHRoaXMpOwogCiAgICAgQVNTRVJUKHBhcmFtZXRlcnMu
c2hvdWxkUHJlY29ubmVjdE9ubHkgPT0gUHJlY29ubmVjdE9ubHk6Olllcyk7CiAgICAgbV9uZXR3
b3JrTG9hZCA9IG1ha2VVbmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCBudWxscHRyLCBXVEZNb3Zl
KHBhcmFtZXRlcnMpLCBuZXR3b3JrU2Vzc2lvbik7Ci0gICAgbV90aW1lb3V0VGltZXIuc3RhcnRP
bmVTaG90KDYwMDAwX3MpOwogfQogCiB2b2lkIFByZWNvbm5lY3RUYXNrOjpzZXRIMlBpbmdDYWxs
YmFjayhjb25zdCBVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxXVEY6
OlNlY29uZHMsIFdlYkNvcmU6OlJlc291cmNlRXJyb3I+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQpAQCAtNTUsOCArNTUsMTQgQEAgdm9pZCBQcmVjb25uZWN0VGFzazo6c2V0SDJQaW5nQ2FsbGJh
Y2soY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXgKICAgICBtX25ldHdv
cmtMb2FkLT5zZXRIMlBpbmdDYWxsYmFjayh1cmwsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKIH0KIAordm9pZCBQcmVjb25uZWN0VGFzazo6c2V0VGltZW91dChTZWNvbmRzIHRpbWVvdXQp
Cit7CisgICAgbV90aW1lb3V0ID0gdGltZW91dDsKK30KKwogdm9pZCBQcmVjb25uZWN0VGFzazo6
c3RhcnQoKQogeworICAgIG1fdGltZW91dFRpbWVyLnN0YXJ0T25lU2hvdChtX3RpbWVvdXQpOwog
ICAgIG1fbmV0d29ya0xvYWQtPnN0YXJ0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaAppbmRleCAxMzYyYjBjNjAxOGM0OGEwMTdmYmQ1NjZi
ZGMzNGM2MmIzNjI1NjNlLi4xYzFmZjE2NDcxMTFjNmZhODQ5NGFmNWNmMGM3YmJlYWExYjI2NTAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNr
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oCkBA
IC00NSw2ICs0NSw3IEBAIHB1YmxpYzoKICAgICB+UHJlY29ubmVjdFRhc2soKTsKIAogICAgIHZv
aWQgc2V0SDJQaW5nQ2FsbGJhY2soY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChF
eHBlY3RlZDxXVEY6OlNlY29uZHMsIFdlYkNvcmU6OlJlc291cmNlRXJyb3I+JiYpPiYmKTsKKyAg
ICB2b2lkIHNldFRpbWVvdXQoU2Vjb25kcyk7CiAgICAgdm9pZCBzdGFydCgpOwogCiBwcml2YXRl
OgpAQCAtNjIsNiArNjMsNyBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdv
cmtMb2FkPiBtX25ldHdvcmtMb2FkOwogICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpPiBtX2NvbXBsZXRpb25IYW5kbGVyOworICAgIFNlY29u
ZHMgbV90aW1lb3V0OwogICAgIFdlYkNvcmU6OlRpbWVyIG1fdGltZW91dFRpbWVyOwogfTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>