<?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>216425</bug_id>
          
          <creation_ts>2020-09-11 16:52:43 -0700</creation_ts>
          <short_desc>Add proper support for AudioContextOptions.sampleRate</short_desc>
          <delta_ts>2020-09-14 09:15:12 -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>Web Audio</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>212611</blocked>
    
    <blocked>216371</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>peng.liu6</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1687854</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-09-11 16:52:43 -0700</bug_when>
    <thetext>Add proper support for AudioContextOptions.sampleRate. Our audio context currently always runs at the hardware sample rate, no matter what value is set for AudioContextOptions.sampleRate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687864</commentid>
    <comment_count>1</comment_count>
      <attachid>408574</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-09-11 17:19:28 -0700</bug_when>
    <thetext>Created attachment 408574
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687871</commentid>
    <comment_count>2</comment_count>
      <attachid>408576</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-09-11 17:53:25 -0700</bug_when>
    <thetext>Created attachment 408576
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687875</commentid>
    <comment_count>3</comment_count>
      <attachid>408577</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-09-11 18:27:34 -0700</bug_when>
    <thetext>Created attachment 408577
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687876</commentid>
    <comment_count>4</comment_count>
      <attachid>408578</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-09-11 18:32:03 -0700</bug_when>
    <thetext>Created attachment 408578
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687877</commentid>
    <comment_count>5</comment_count>
      <attachid>408579</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-09-11 18:38:41 -0700</bug_when>
    <thetext>Created attachment 408579
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687879</commentid>
    <comment_count>6</comment_count>
      <attachid>408580</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-09-11 18:50:17 -0700</bug_when>
    <thetext>Created attachment 408580
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687880</commentid>
    <comment_count>7</comment_count>
      <attachid>408581</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-09-11 19:37:34 -0700</bug_when>
    <thetext>Created attachment 408581
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687886</commentid>
    <comment_count>8</comment_count>
      <attachid>408581</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-09-11 20:29:41 -0700</bug_when>
    <thetext>Comment on attachment 408581
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        at the hardware&apos;s sampleRate, no matter what value for set for AudioContextOptions.sampleRate.

Nit.
s/for set/set/

&gt; Source/WebCore/ChangeLog:18
&gt; +        When creating a AudioDestination, pass the requested AudioContext sample rate

Nit.
s/a/an/

&gt; Source/WebCore/ChangeLog:58
&gt; +          MultiChannelResampler and use in in render() to do the resampling.

Nit.
s/in in/it in/

&gt; Source/WebCore/platform/graphics/cocoa/SourceBufferParserWebM.cpp:59
&gt; +constexpr CMVideoCodecType kCMVideoCodecType_VP9 { &apos;vp09&apos; };

There is some update about this in bug 216205.
:-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687897</commentid>
    <comment_count>9</comment_count>
      <attachid>408581</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-09-11 22:45:34 -0700</bug_when>
    <thetext>Comment on attachment 408581
Patch

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

Can we enable or add tests for AudioContextOptions.sampleRate?

&gt; Source/WebCore/ChangeLog:8
&gt; +        Add proper support for AudioContextOptions.sampleRate. Previously, our AudioContext always run

s/always run/always ran/

&gt; Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.cpp:-86
&gt; -    float hardwareSampleRate = AudioDestination::hardwareSampleRate();
&gt; -    LOG(WebAudio, &quot;&gt;&gt;&gt;&gt; hardwareSampleRate = %f\n&quot;, hardwareSampleRate);

Is this needed now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688242</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-09-14 08:14:23 -0700</bug_when>
    <thetext>(In reply to Eric Carlson from comment #9)
&gt; Comment on attachment 408581 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=408581&amp;action=review
&gt; 
&gt; Can we enable or add tests for AudioContextOptions.sampleRate?

The tests for AudioContextOptions.sampleRate were already passing since we were lying to the JS and returning the sample rate it expected (even though it was not the sample rate we used internally. Do you have an idea on how to better test this?

&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        Add proper support for AudioContextOptions.sampleRate. Previously, our AudioContext always run
&gt; 
&gt; s/always run/always ran/
&gt; 
&gt; &gt; Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.cpp:-86
&gt; &gt; -    float hardwareSampleRate = AudioDestination::hardwareSampleRate();
&gt; &gt; -    LOG(WebAudio, &quot;&gt;&gt;&gt;&gt; hardwareSampleRate = %f\n&quot;, hardwareSampleRate);
&gt; 
&gt; Is this needed now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688243</commentid>
    <comment_count>11</comment_count>
      <attachid>408706</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-09-14 08:19:28 -0700</bug_when>
    <thetext>Created attachment 408706
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688250</commentid>
    <comment_count>12</comment_count>
      <attachid>408706</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-09-14 08:47:58 -0700</bug_when>
    <thetext>Comment on attachment 408706
Patch

Clearing flags on attachment: 408706

Committed r267014: &lt;https://trac.webkit.org/changeset/267014&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688251</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-09-14 08:48:00 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688252</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-14 08:48:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/68856997&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688262</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-09-14 09:15:12 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #10)
&gt; (In reply to Eric Carlson from comment #9)
&gt; &gt; Comment on attachment 408581 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=408581&amp;action=review
&gt; &gt; 
&gt; &gt; Can we enable or add tests for AudioContextOptions.sampleRate?
&gt; 
&gt; The tests for AudioContextOptions.sampleRate were already passing since we
&gt; were lying to the JS and returning the sample rate it expected (even though
&gt; it was not the sample rate we used internally. 
&gt; 
LOL, why not!



&gt; Do you have an idea on how to better test this?
&gt; 
It seems fine as long as we aren&apos;t just returning the expected rate.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408574</attachid>
            <date>2020-09-11 17:19:28 -0700</date>
            <delta_ts>2020-09-11 17:53:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216425-20200911171927.patch</filename>
            <type>text/plain</type>
            <size>66641</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2OTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGFmOGZmYjhmMDQ4NjI3
ZTlkNzY5NmVhODZiYzZiNDU3ZGY2OWYzMi4uZGE1YTdlYzdmNTM5NjhhM2U3N2ZlZTY1MmQ1YWJj
YjBkYjNjZjQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDIwLTA5LTExICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHByb3BlciBzdXBwb3J0
IGZvciBBdWRpb0NvbnRleHRPcHRpb25zLnNhbXBsZVJhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjQyNQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBwcm9wZXIgc3VwcG9ydCBmb3IgQXVkaW9D
b250ZXh0T3B0aW9ucy5zYW1wbGVSYXRlLiBQcmV2aW91c2x5LCBvdXIgQXVkaW9Db250ZXh0IGFs
d2F5cyBydW4KKyAgICAgICAgYXQgdGhlIGhhcmR3YXJlJ3Mgc2FtcGxlUmF0ZSwgbm8gbWF0dGVy
IHdoYXQgdmFsdWUgZm9yIHNldCBmb3IgQXVkaW9Db250ZXh0T3B0aW9ucy5zYW1wbGVSYXRlLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYmFzZWQgb24gdGhlIGZvbGxvd2luZyBDaHJvbWl1bSBj
aGFuZ2VzOgorICAgICAgICAtIGh0dHBzOi8vY2hyb21pdW0tcmV2aWV3Lmdvb2dsZXNvdXJjZS5j
b20vYy9jaHJvbWl1bS9zcmMvKy8xNDgyOTU3CisgICAgICAgIC0gaHR0cHM6Ly9jb2RlcmV2aWV3
LmNocm9taXVtLm9yZy8yNTQ5MDkzMDA5CisgICAgICAgIC0gaHR0cHM6Ly9jb2RlcmV2aWV3LmNo
cm9taXVtLm9yZy8xNDE4OTAzNQorCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0
QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVmYXVsdEF1ZGlv
RGVzdGluYXRpb25Ob2RlOjpjcmVhdGVEZXN0aW5hdGlvbik6CisgICAgICAgIFdoZW4gY3JlYXRp
bmcgYSBBdWRpb0Rlc3RpbmF0aW9uLCBwYXNzIHRoZSByZXF1ZXN0ZWQgQXVkaW9Db250ZXh0IHNh
bXBsZSByYXRlCisgICAgICAgIGluc3RlYWQgb2YgdGhlIGhhcmR3YXJlIHNhbXBsZSByYXRlLgor
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9GSUZPLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmg6IFJlbW92ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vUHVzaFB1bGxGSUZPLmNwcDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vUHVzaFB1bGxGSUZPLmg6IEFkZGVkLgorICAgICAgICBSZXBsYWNlIEF1ZGlv
RklGTyBhbmQgQXVkaW9QdWxsRklGTyB3aXRoIGEgbmV3IFB1c2hQdWxsRklGTyByZXBsYWNlbWVu
dCwgc2ltaWxhcmx5CisgICAgICAgIHRvIHdoYXQgd2FzIGRvbmUgaW4gQ2hyb21pdW0gaW46Cisg
ICAgICAgIC0gaHR0cHM6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8yNTQ5MDkzMDA5CisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TXVsdGlDaGFubmVsUmVzYW1wbGVyOjpNdWx0aUNoYW5uZWxSZXNhbXBsZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2luY1Jlc2FtcGxlcjo6U2luY1Jlc2FtcGxlcik6CisgICAgICAgIChXZWJDb3JlOjpTaW5j
UmVzYW1wbGVyOjp1cGRhdGVSZWdpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbmNSZXNhbXBs
ZXI6OmluaXRpYWxpemVLZXJuZWwpOgorICAgICAgICAoV2ViQ29yZTo6U2luY1Jlc2FtcGxlcjo6
cHJvY2Vzcyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5oOgorICAg
ICAgICBBZGQgcGFyYW1ldGVyIHRvIE11bHRpQ2hhbm5lbFJlc2FtcGxlciAmIFNpbmNSZXNhbXBs
ZXIgdG8gYWxsb3cgdGhlIGNsaWVudCB0byBzcGVjaWZ5CisgICAgICAgIHRoZSBzaXplIG9mIHRo
ZSBidWZmZXIgaW4gZnJhbWVzIHdoZW4gdGhlIHJlc2FtcGxlciBjYWxscyBBdWRpb1NvdXJjZVBy
b3ZpZGVyOjpwcm92aWRlSW5wdXQoKQorICAgICAgICB0byBnZXQgaW5wdXQgZGF0YS4gVGhpcyBp
cyBuZWNlc3NhcnkgYmVjYXVzZSBvdXIgV2ViQXVkaW8gaW1wbGVtZW50YXRpb24gdXNlcyBhIHN0
YXRpYworICAgICAgICBidWZmZXIgc2l6ZSBvZiAxMjggZnJhbWVzLiBUaGlzIGlzIHNpbWlsYXIg
dG8gd2hhdCB3YXMgZG9uZSBpbiBDaHJvbWl1bSBpbjoKKyAgICAgICAgLSBodHRwczovL2NvZGVy
ZXZpZXcuY2hyb21pdW0ub3JnLzE0MTg5MDM1CisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9E
ZXN0aW5hdGlvbkNvY29hOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2EpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpyZW5kZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpwcm92aWRlSW5wdXQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5oOgorICAg
ICAgICAtIEFkb3B0IFB1c2hQdWxsRklGTyB0byByZXNvbHZlIHRoZSBidWZmZXIgc2l6ZSBtaXNt
YXRjaCBiZXR3ZWVuIHRoZSBXZWJBdWRpbyBlbmdpbmUgYW5kCisgICAgICAgICAgdGhlIGNhbGxi
YWNrIGZ1bmN0aW9uIGZyb20gdGhlIGFjdHVhbCBhdWRpbyBkZXZpY2UsIHNpbWlsYXJseSB0byB3
aGF0IHdhcyBkb25lIGluIENocm9taXVtLgorICAgICAgICAtIFdoZW4gdGhlIGNvbnRleHQncyBz
YW1wbGUgcmF0ZSBkaWZmZXJzIGZyb20gdGhlIGhhcmR3YXJlIHNhbXBsZSByYXRlLCBpbnN0YW50
aWF0ZSBhCisgICAgICAgICAgTXVsdGlDaGFubmVsUmVzYW1wbGVyIGFuZCB1c2UgaW4gaW4gcmVu
ZGVyKCkgdG8gZG8gdGhlIHJlc2FtcGxpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9p
b3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3Rp
bmF0aW9uQ29jb2E6OmNvbmZpZ3VyZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1
ZGlvRGVzdGluYXRpb25NYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlv
bkNvY29hOjpjb25maWd1cmUpOgorICAgICAgICBEcm9wIHNhbXBsZVJhdGUgcGFyYW1ldGVyIGFz
IGl0IGlzIG5vIGxvbmdlciBuZWVkZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgQnVpbGQgZml4IHRoYXQg
aXMgbmVlZGVkIGJlY2F1c2UgSSBhZGRlZC9yZW1vdmVkIGZpbGVzIHRvIHRoZSBwcm9qZWN0IGFu
ZCBzb3VyY2UKKyAgICAgICAgZmlsZXMgYXJlIG5vdyBidW5kbGVkIGRpZmZlcmVudGx5IHdoZW4g
YnVpbGRpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tBdWRpb0Rlc3RpbmF0aW9u
Q29jb2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0F1ZGlvRGVzdGluYXRpb25Db2NvYTo6
dGljayk6CisKIDIwMjAtMDktMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBBdWRpb0NvbnRleHQgZG9lcyBub3Qgc3RhcnQgcmVuZGVyaW5nIHVudGlsIGFuIEF1
ZGlvTm9kZSBpcyBjb25zdHJ1Y3RlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCmluZGV4
IGIxNTllMzJmMTFiYTc5NGYxZmUxMDc1OGQ5NjAwZWU2ZDA4OTQyOGUuLjQyM2RjYTMwZWRiNDQw
NDBjMTRlNjkzMTg0MWQwZjIzYTA4ZWNkZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5j
cHAKQEAgLTgyLDEwICs4Miw3IEBAIHZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjp1
bmluaXRpYWxpemUoKQogCiB2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6Y3JlYXRl
RGVzdGluYXRpb24oKQogewotICAgIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSA9IEF1ZGlvRGVz
dGluYXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSgpOwotICAgIExPRyhXZWJBdWRpbywgIj4+Pj4g
aGFyZHdhcmVTYW1wbGVSYXRlID0gJWZcbiIsIGhhcmR3YXJlU2FtcGxlUmF0ZSk7Ci0KLSAgICBt
X2Rlc3RpbmF0aW9uID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPm1lZGlhU3RyYXRlZ3koKS5jcmVh
dGVBdWRpb0Rlc3RpbmF0aW9uKCp0aGlzLCBtX2lucHV0RGV2aWNlSWQsIG1fbnVtYmVyT2ZJbnB1
dENoYW5uZWxzLCBjaGFubmVsQ291bnQoKSwgaGFyZHdhcmVTYW1wbGVSYXRlKTsKKyAgICBtX2Rl
c3RpbmF0aW9uID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPm1lZGlhU3RyYXRlZ3koKS5jcmVhdGVB
dWRpb0Rlc3RpbmF0aW9uKCp0aGlzLCBtX2lucHV0RGV2aWNlSWQsIG1fbnVtYmVyT2ZJbnB1dENo
YW5uZWxzLCBjaGFubmVsQ291bnQoKSwgbV9zYW1wbGVSYXRlKTsKIH0KIAogdm9pZCBEZWZhdWx0
QXVkaW9EZXN0aW5hdGlvbk5vZGU6OmVuYWJsZUlucHV0KGNvbnN0IFN0cmluZyYgaW5wdXREZXZp
Y2VJZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKaW5kZXggMDg3MjE2MDY2MjA2ZmVjZTAxYTAwZWU1YjQzNjU0MjI5
YjJhYTllNC4uMzAyOTFiMTJlMTc4ZjNkOWMzMTczMjk3OTJmMjg3OThkN2Q2NzZhZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKQEAgLTE3ODgsOSArMTc4OCw3IEBAIHBsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdG
dW5jdGlvbi5jcHAKIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcAogcGxhdGZvcm0vYXVkaW8v
QXVkaW9DaGFubmVsLmNwcAogcGxhdGZvcm0vYXVkaW8vQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3Iu
Y3BwCi1wbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uY3BwCiBwbGF0Zm9ybS9hdWRpby9BdWRpb0hh
cmR3YXJlTGlzdGVuZXIuY3BwCi1wbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmNwcAogcGxh
dGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIuY3BwCiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2Ft
cGxlcktlcm5lbC5jcHAKIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvVXRpbGl0aWVzLmNwcApAQCAtMTgx
NCw2ICsxODEyLDcgQEAgcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNwcAog
cGxhdGZvcm0vYXVkaW8vUGFubmVyLmNwcAogcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNl
c3Npb24uY3BwCiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuY3Bw
CitwbGF0Zm9ybS9hdWRpby9QdXNoUHVsbEZJRk8uY3BwCiBwbGF0Zm9ybS9hdWRpby9SZXZlcmIu
Y3BwCiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIuY3BwCiBwbGF0Zm9y
bS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDBkNTk1Mzk5ZGU1Y2EwNTE4ZjIxMDUy
MmVmNDMwNTJiMWU4MTAyZi4uOWViN2FlOGMyMWVjNjljNGE2ZmI2ODZhYjljZGJkYjdmNzczZTdj
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMjUyNiw2ICsyNTI2LDcgQEAKIAkJODNDNTc5NUQxREE1QzMwMTAwNkZBQ0E4IC8q
IFNjcm9sbFRvT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODM1MEMzRTcxREE1OUI2MjAwMzU2NDQ2IC8qIFNjcm9sbFRvT3B0aW9ucy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzRDM1QUVD
MUM3MTg3RkEwMEY3MEQ1QSAvKiBYTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0QzNUFFQTFDNzE4N0VEMDBG
NzBENUEgLyogWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5oICovOyB9OwogCQk4M0QzNUFGMjFD
NzE4RDkwMDBGNzBENUEgLyogSlNYTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0QzNUFGMDFDNzE4RDg0MDBG
NzBENUEgLyogSlNYTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0LmggKi87IH07CisJCTgzRDUxMUY2
MjUwQzFDQkYwMDJFREM1MSAvKiBQdXNoUHVsbEZJRk8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRDUxMUY1MjUwQzFDQTgwMDJFREM1MSAvKiBQdXNo
UHVsbEZJRk8uaCAqLzsgfTsKIAkJODNEQjlFMEYyNERBMTk0OTAwMzdCNDY4IC8qIEJpcXVhZEZp
bHRlclR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgzREI5RTBDMjREQTE4QjUwMDM3QjQ2OCAvKiBCaXF1YWRGaWx0ZXJUeXBlLmggKi87IH07CiAJ
CTgzREI5RTEwMjREQTE5NTcwMDM3QjQ2OCAvKiBCaXF1YWRGaWx0ZXJPcHRpb25zLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0RCOUUwRTI0REExOEI2
MDAzN0I0NjggLyogQmlxdWFkRmlsdGVyT3B0aW9ucy5oICovOyB9OwogCQk4M0UzNTlBMjFCQjEw
MzFEMDAyQ0VCOTggLyogSlNIVE1MVGltZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRTM1OUEwMUJCMTAzMUQwMDJDRUI5OCAvKiBKU0hU
TUxUaW1lRWxlbWVudC5oICovOyB9OwpAQCAtMTA2OTMsNiArMTA2OTQsOCBAQAogCQk4M0QzNUFF
QjFDNzE4N0VEMDBGNzBENUEgLyogWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzRDM1QUVGMUM3MThEODQwMEY3MEQ1QSAvKiBKU1hNTEh0
dHBSZXF1ZXN0RXZlbnRUYXJnZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNYTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODNEMzVBRjAxQzcxOEQ4NDAwRjcwRDVBIC8qIEpTWE1MSHR0cFJlcXVlc3RF
dmVudFRhcmdldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1hNTEh0dHBS
ZXF1ZXN0RXZlbnRUYXJnZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODNENTEx
RjMyNTBDMUNBODAwMkVEQzUxIC8qIFB1c2hQdWxsRklGTy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBQdXNoUHVsbEZJRk8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk4M0Q1MTFGNTI1MEMxQ0E4MDAyRURDNTEgLyogUHVzaFB1bGxGSUZPLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1c2hQdWxsRklGTy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4M0RCOUUwQTI0REExOEI0MDAzN0I0NjggLyogQmlxdWFkRmls
dGVyVHlwZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gQmlxdWFkRmlsdGVyVHlwZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTgzREI5RTBDMjREQTE4QjUwMDM3QjQ2OCAvKiBCaXF1YWRGaWx0ZXJUeXBl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEJpcXVhZEZpbHRlclR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODNEQjlFMEQyNERBMThCNTAwMzdCNDY4IC8qIEJpcXVhZEZpbHRlck9wdGlv
bnMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IEJpcXVhZEZpbHRlck9wdGlvbnMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjk5OTksNiArMzAwMDIsOCBAQAogCQkJCTA3MEUwOTE4MTg3NUVEOTMwMDNB
MUQzQyAvKiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oICovLAogCQkJCUNEQUU4QzA3MTc0NkI5NTcw
MDUzMkQ3OCAvKiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwICovLAogCQkJCUNEQUU4
QzA4MTc0NkI5NTcwMDUzMkQ3OCAvKiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaCAqLywK
KwkJCQk4M0Q1MTFGMzI1MEMxQ0E4MDAyRURDNTEgLyogUHVzaFB1bGxGSUZPLmNwcCAqLywKKwkJ
CQk4M0Q1MTFGNTI1MEMxQ0E4MDAyRURDNTEgLyogUHVzaFB1bGxGSUZPLmggKi8sCiAJCQkJRkQz
MTYwNkUxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYi5jcHAgKi8sCiAJCQkJRkQzMTYwNkYxMkIw
MjZGNzAwQzFBMzU5IC8qIFJldmVyYi5oICovLAogCQkJCUZEMzE2MDcwMTJCMDI2RjcwMEMxQTM1
OSAvKiBSZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIuY3BwICovLApAQCAtMzMyMzEsNiArMzMyMzYs
NyBAQAogCQkJCTU3MzAzQkVCMjAwOTdGNDAwMDM1NTk2NSAvKiBQdWJsaWNLZXlDcmVkZW50aWFs
VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDA4MUZGMDAxNkIwQTJEMzAwOEFBQTdBIC8qIFB1
YmxpY1N1ZmZpeC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTBGQjA4NEIxNEUxNUM3RTAwQTNEQjk4
IC8qIFB1YmxpY1VSTE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTgzRDUxMUY2MjUwQzFD
QkYwMDJFREM1MSAvKiBQdXNoUHVsbEZJRk8uaCBpbiBIZWFkZXJzICovLAogCQkJCTU1MEEwQkNB
MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
M0MxRjU5NDFFREY2OUQzMDA0MTBEMjcgLyogUXVhbGlmaWVkTmFtZUNhY2hlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBMTVFMzFGNDFFMENCMEI1MDA0QjM3MUMgLyogUXVpY2tMb29rLmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlv
RklGTy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjNhYTQ5OWY2OThiYjQ0MzdkYmI5NmRkNzIx
NTUwYmEyY2M1ZmViLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRklGTy5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwxNDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFdFQl9BVURJ
TykKLQotI2luY2x1ZGUgIkF1ZGlvRklGTy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUF1
ZGlvRklGTzo6QXVkaW9GSUZPKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBmaWZv
TGVuZ3RoKQotICAgIDogbV9maWZvQXVkaW9CdXMoQXVkaW9CdXM6OmNyZWF0ZShudW1iZXJPZkNo
YW5uZWxzLCBmaWZvTGVuZ3RoKSkKLSAgICAsIG1fZmlmb0xlbmd0aChmaWZvTGVuZ3RoKQotICAg
ICwgbV9mcmFtZXNJbkZpZm8oMCkKLSAgICAsIG1fcmVhZEluZGV4KDApCi0gICAgLCBtX3dyaXRl
SW5kZXgoMCkKLXsKLX0KLQotdm9pZCBBdWRpb0ZJRk86OmNvbnN1bWUoQXVkaW9CdXMqIGRlc3Rp
bmF0aW9uLCBzaXplX3QgZnJhbWVzVG9Db25zdW1lKQotewotICAgIGJvb2wgaXNHb29kID0gZGVz
dGluYXRpb24gJiYgKGZyYW1lc1RvQ29uc3VtZSA8PSBtX2ZpZm9MZW5ndGgpICYmIChmcmFtZXNU
b0NvbnN1bWUgPD0gbV9mcmFtZXNJbkZpZm8pICYmIChkZXN0aW5hdGlvbi0+bGVuZ3RoKCkgPj0g
ZnJhbWVzVG9Db25zdW1lKTsKLSAgICBBU1NFUlQoaXNHb29kKTsKLSAgICBpZiAoIWlzR29vZCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gQ29weSB0aGUgcmVxdWVzdGVkIG51bWJlciBvZiBz
YW1wbGVzIHRvIHRoZSBkZXN0aW5hdGlvbi4KLQotICAgIHNpemVfdCBwYXJ0MUxlbmd0aDsKLSAg
ICBzaXplX3QgcGFydDJMZW5ndGg7Ci0gICAgZmluZFdyYXBMZW5ndGhzKG1fcmVhZEluZGV4LCBm
cmFtZXNUb0NvbnN1bWUsIHBhcnQxTGVuZ3RoLCBwYXJ0Mkxlbmd0aCk7Ci0KLSAgICBzaXplX3Qg
bnVtYmVyT2ZDaGFubmVscyA9IG1fZmlmb0F1ZGlvQnVzLT5udW1iZXJPZkNoYW5uZWxzKCk7Ci0K
LSAgICBmb3IgKHNpemVfdCBjaGFubmVsSW5kZXggPSAwOyBjaGFubmVsSW5kZXggPCBudW1iZXJP
ZkNoYW5uZWxzOyArK2NoYW5uZWxJbmRleCkgewotICAgICAgICBmbG9hdCogZGVzdGluYXRpb25E
YXRhID0gZGVzdGluYXRpb24tPmNoYW5uZWwoY2hhbm5lbEluZGV4KS0+bXV0YWJsZURhdGEoKTsK
LSAgICAgICAgY29uc3QgZmxvYXQqIHNvdXJjZURhdGEgPSBtX2ZpZm9BdWRpb0J1cy0+Y2hhbm5l
bChjaGFubmVsSW5kZXgpLT5kYXRhKCk7Ci0KLSAgICAgICAgYm9vbCBpc0NvcHlHb29kID0gKCht
X3JlYWRJbmRleCA8IG1fZmlmb0xlbmd0aCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICYm
IChtX3JlYWRJbmRleCArIHBhcnQxTGVuZ3RoKSA8PSBtX2ZpZm9MZW5ndGgKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICYmIChwYXJ0MUxlbmd0aCA8PSBkZXN0aW5hdGlvbi0+bGVuZ3RoKCkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAocGFydDFMZW5ndGggKyBwYXJ0Mkxlbmd0
aCkgPD0gZGVzdGluYXRpb24tPmxlbmd0aCgpKTsKLSAgICAgICAgQVNTRVJUKGlzQ29weUdvb2Qp
OwotICAgICAgICBpZiAoIWlzQ29weUdvb2QpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgbWVtY3B5KGRlc3RpbmF0aW9uRGF0YSwgc291cmNlRGF0YSArIG1fcmVhZEluZGV4LCBwYXJ0
MUxlbmd0aCAqIHNpemVvZigqc291cmNlRGF0YSkpOwotICAgICAgICAvLyBIYW5kbGUgd3JhcCBh
cm91bmQgb2YgdGhlIEZJRk8sIGlmIG5lZWRlZC4KLSAgICAgICAgaWYgKHBhcnQyTGVuZ3RoKQot
ICAgICAgICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uRGF0YSArIHBhcnQxTGVuZ3RoLCBzb3VyY2VE
YXRhLCBwYXJ0Mkxlbmd0aCAqIHNpemVvZigqc291cmNlRGF0YSkpOwotICAgIH0KLSAgICBtX3Jl
YWRJbmRleCA9IHVwZGF0ZUluZGV4KG1fcmVhZEluZGV4LCBmcmFtZXNUb0NvbnN1bWUpOwotICAg
IEFTU0VSVChtX2ZyYW1lc0luRmlmbyA+PSBmcmFtZXNUb0NvbnN1bWUpOwotICAgIG1fZnJhbWVz
SW5GaWZvIC09IGZyYW1lc1RvQ29uc3VtZTsKLX0KLQotdm9pZCBBdWRpb0ZJRk86OnB1c2goY29u
c3QgQXVkaW9CdXMqIHNvdXJjZUJ1cykKLXsKLSAgICAvLyBDb3B5IHRoZSBzb3VyY2VCdXMgaW50
byB0aGUgRklGTyBidWZmZXIuCi0KLSAgICBib29sIGlzR29vZCA9IHNvdXJjZUJ1cyAmJiAobV9m
cmFtZXNJbkZpZm8gKyBzb3VyY2VCdXMtPmxlbmd0aCgpIDw9IG1fZmlmb0xlbmd0aCk7Ci0gICAg
aWYgKCFpc0dvb2QpCi0gICAgICAgIHJldHVybjsKLQotICAgIHNpemVfdCBzb3VyY2VMZW5ndGgg
PSBzb3VyY2VCdXMtPmxlbmd0aCgpOwotICAgIHNpemVfdCBwYXJ0MUxlbmd0aDsKLSAgICBzaXpl
X3QgcGFydDJMZW5ndGg7Ci0gICAgZmluZFdyYXBMZW5ndGhzKG1fd3JpdGVJbmRleCwgc291cmNl
TGVuZ3RoLCBwYXJ0MUxlbmd0aCwgcGFydDJMZW5ndGgpOwotCi0gICAgc2l6ZV90IG51bWJlck9m
Q2hhbm5lbHMgPSBtX2ZpZm9BdWRpb0J1cy0+bnVtYmVyT2ZDaGFubmVscygpOwotCi0gICAgZm9y
IChzaXplX3QgY2hhbm5lbEluZGV4ID0gMDsgY2hhbm5lbEluZGV4IDwgbnVtYmVyT2ZDaGFubmVs
czsgKytjaGFubmVsSW5kZXgpIHsKLSAgICAgICAgZmxvYXQqIGRlc3RpbmF0aW9uID0gbV9maWZv
QXVkaW9CdXMtPmNoYW5uZWwoY2hhbm5lbEluZGV4KS0+bXV0YWJsZURhdGEoKTsKLSAgICAgICAg
Y29uc3QgZmxvYXQqIHNvdXJjZSA9IHNvdXJjZUJ1cy0+Y2hhbm5lbChjaGFubmVsSW5kZXgpLT5k
YXRhKCk7Ci0KLSAgICAgICAgYm9vbCBpc0NvcHlHb29kID0gKChtX3dyaXRlSW5kZXggPCBtX2Zp
Zm9MZW5ndGgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAobV93cml0ZUluZGV4ICsg
cGFydDFMZW5ndGgpIDw9IG1fZmlmb0xlbmd0aAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
JiYgcGFydDJMZW5ndGggPCBtX2ZpZm9MZW5ndGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICYmIHBhcnQxTGVuZ3RoICsgcGFydDJMZW5ndGggPD0gc291cmNlTGVuZ3RoKTsKLSAgICAgICAg
QVNTRVJUKGlzQ29weUdvb2QpOwotICAgICAgICBpZiAoIWlzQ29weUdvb2QpCi0gICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uICsgbV93cml0ZUluZGV4LCBz
b3VyY2UsIHBhcnQxTGVuZ3RoICogc2l6ZW9mKCpkZXN0aW5hdGlvbikpOwotCi0gICAgICAgIC8v
IEhhbmRsZSB3cmFwIGFyb3VuZCBvZiB0aGUgRklGTywgaWYgbmVlZGVkLgotICAgICAgICBpZiAo
cGFydDJMZW5ndGgpCi0gICAgICAgICAgICBtZW1jcHkoZGVzdGluYXRpb24sIHNvdXJjZSArIHBh
cnQxTGVuZ3RoLCBwYXJ0Mkxlbmd0aCAqIHNpemVvZigqZGVzdGluYXRpb24pKTsKLSAgICB9Ci0g
ICAgICAgIAotICAgIG1fZnJhbWVzSW5GaWZvICs9IHNvdXJjZUxlbmd0aDsKLSAgICBBU1NFUlQo
bV9mcmFtZXNJbkZpZm8gPD0gbV9maWZvTGVuZ3RoKTsKLSAgICBtX3dyaXRlSW5kZXggPSB1cGRh
dGVJbmRleChtX3dyaXRlSW5kZXgsIHNvdXJjZUxlbmd0aCk7Ci19Ci0KLXZvaWQgQXVkaW9GSUZP
OjpmaW5kV3JhcExlbmd0aHMoc2l6ZV90IGluZGV4LCBzaXplX3Qgc2l6ZSwgc2l6ZV90JiBwYXJ0
MUxlbmd0aCwgc2l6ZV90JiBwYXJ0Mkxlbmd0aCkKLXsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklU
WV9JTVBMSUNBVElPTihpbmRleCA8IG1fZmlmb0xlbmd0aCAmJiBzaXplIDw9IG1fZmlmb0xlbmd0
aCk7Ci0gICAgaWYgKGluZGV4IDwgbV9maWZvTGVuZ3RoICYmIHNpemUgPD0gbV9maWZvTGVuZ3Ro
KSB7Ci0gICAgICAgIGlmIChpbmRleCArIHNpemUgPiBtX2ZpZm9MZW5ndGgpIHsKLSAgICAgICAg
ICAgIC8vIE5lZWQgdG8gd3JhcC4gRmlndXJlIG91dCB0aGUgbGVuZ3RoIG9mIGVhY2ggcGllY2Uu
Ci0gICAgICAgICAgICBwYXJ0MUxlbmd0aCA9IG1fZmlmb0xlbmd0aCAtIGluZGV4OwotICAgICAg
ICAgICAgcGFydDJMZW5ndGggPSBzaXplIC0gcGFydDFMZW5ndGg7Ci0gICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAvLyBObyB3cmFwIG5lZWRlZC4KLSAgICAgICAgICAgIHBhcnQxTGVuZ3Ro
ID0gc2l6ZTsKLSAgICAgICAgICAgIHBhcnQyTGVuZ3RoID0gMDsKLSAgICAgICAgfQotICAgIH0g
ZWxzZSB7Ci0gICAgICAgIC8vIEludmFsaWQgdmFsdWVzIGZvciBpbmRleCBvciBzaXplLiBTZXQg
dGhlIHBhcnQgbGVuZ3RocyB0byB6ZXJvIHNvIG5vdGhpbmcgaXMgY29waWVkLgotICAgICAgICBw
YXJ0MUxlbmd0aCA9IDA7Ci0gICAgICAgIHBhcnQyTGVuZ3RoID0gMDsKLSAgICB9Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRklGTy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwZjQzOGRkN2QwZmE1OWZiNjQ0ZDRkZjU3MmY1NTlmZDY2MzA4YmQzLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRklGTy5oCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0g
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRl
ZiBBdWRpb0ZJRk9faAotI2RlZmluZSBBdWRpb0ZJRk9faAotCi0jaW5jbHVkZSAiQXVkaW9CdXMu
aCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBBdWRpb0ZJRk8gZmluYWwgewotICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIC8vIENyZWF0ZSBhIEZJRk8g
bGFyZ2UgZW5vdWdoIHRvIGhvbGQgfGZpZm9MZW5ndGh8IGZyYW1lcyBvZiBkYXRhIG9mIHxudW1i
ZXJPZkNoYW5uZWxzfCBjaGFubmVscy4KLSAgICBBdWRpb0ZJRk8odW5zaWduZWQgbnVtYmVyT2ZD
aGFubmVscywgc2l6ZV90IGZpZm9MZW5ndGgpOwotCi0gICAgLy8gUHVzaCB0aGUgZGF0YSBmcm9t
IHRoZSBidXMgaW50byB0aGUgRklGTy4KLSAgICB2b2lkIHB1c2goY29uc3QgQXVkaW9CdXMqKTsK
LQotICAgIC8vIENvbnN1bWUgfGZyYW1lc1RvQ29uc3VtZXwgZnJhbWVzIG9mIGRhdGEgZnJvbSB0
aGUgRklGTyBhbmQgcHV0IHRoZW0gaW4gfGRlc3RpbmF0aW9ufC4gVGhlCi0gICAgLy8gY29ycmVz
cG9uZGluZyBmcmFtZXMgYXJlIHJlbW92ZWQgZnJvbSB0aGUgRklGTy4KLSAgICB2b2lkIGNvbnN1
bWUoQXVkaW9CdXMqIGRlc3RpbmF0aW9uLCBzaXplX3QgZnJhbWVzVG9Db25zdW1lKTsKLQotICAg
IC8vIE51bWJlciBvZiBmcmFtZXMgb2YgZGF0YSB0aGF0IGFyZSBjdXJyZW50bHkgaW4gdGhlIEZJ
Rk8uCi0gICAgc2l6ZV90IGZyYW1lc0luRmlmbygpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVzSW5G
aWZvOyB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gVXBkYXRlIHRoZSBGSUZPIGluZGV4IGJ5IHRoZSBz
dGVwLCB3aXRoIGFwcHJvcHJpYXRlIHdyYXBwaW5nIGFyb3VuZCB0aGUgZW5kcG9pbnQuCi0gICAg
aW50IHVwZGF0ZUluZGV4KGludCBpbmRleCwgaW50IHN0ZXApIHsgcmV0dXJuIChpbmRleCArIHN0
ZXApICUgbV9maWZvTGVuZ3RoOyB9Ci0KLSAgICB2b2lkIGZpbmRXcmFwTGVuZ3RocyhzaXplX3Qg
aW5kZXgsIHNpemVfdCBwcm92aWRlclNpemUsIHNpemVfdCYgcGFydDFMZW5ndGgsIHNpemVfdCYg
cGFydDJMZW5ndGgpOwotICAgIAotICAgIC8vIFRoZSBGSUZPIGl0c2VsZi4gSW4gcmVhbGl0eSwg
dGhlIEZJRk8gaXMgYSBjaXJjdWxhciBidWZmZXIuCi0gICAgUmVmUHRyPEF1ZGlvQnVzPiBtX2Zp
Zm9BdWRpb0J1czsKLQotICAgIC8vIFRoZSB0b3RhbCBhdmFpbGFibGUgc3BhY2UgaW4gdGhlIEZJ
Rk8uCi0gICAgc2l6ZV90IG1fZmlmb0xlbmd0aDsKLQotICAgIC8vIFRoZSBudW1iZXIgb2YgYWN0
dWFsIGVsZW1lbnRzIGluIHRoZSBGSUZPCi0gICAgc2l6ZV90IG1fZnJhbWVzSW5GaWZvOwotCi0g
ICAgLy8gV2hlcmUgdG8gc3RhcnQgcmVhZGluZyBmcm9tIHRoZSBGSUZPLgotICAgIHNpemVfdCBt
X3JlYWRJbmRleDsKLQotICAgIC8vIFdoZXJlIHRvIHN0YXJ0IHdyaXRpbmcgdG8gdGhlIEZJRk8u
Ci0gICAgc2l6ZV90IG1fd3JpdGVJbmRleDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEF1ZGlvRklGTy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0F1ZGlvUHVsbEZJRk8uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjFh
NjIyMjZiOWY4MTcyYjdmYzYwZGMyMjAyMDQ2MDU5YjM1ODdhLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0F1ZGlvUHVsbEZJRk8uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFw
cGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotCi0jaWYgRU5BQkxFKFdFQl9BVURJTykKLQotI2luY2x1ZGUgIkF1ZGlvUHVsbEZJRk8u
aCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1BdWRpb1B1bGxGSUZPOjpBdWRpb1B1bGxGSUZP
KEF1ZGlvU291cmNlUHJvdmlkZXImIGF1ZGlvUHJvdmlkZXIsIHVuc2lnbmVkIG51bWJlck9mQ2hh
bm5lbHMsIHNpemVfdCBmaWZvTGVuZ3RoLCBzaXplX3QgcHJvdmlkZXJTaXplKQotICAgIDogbV9w
cm92aWRlcihhdWRpb1Byb3ZpZGVyKQotICAgICwgbV9maWZvKG51bWJlck9mQ2hhbm5lbHMsIGZp
Zm9MZW5ndGgpCi0gICAgLCBtX3Byb3ZpZGVyU2l6ZShwcm92aWRlclNpemUpCi0gICAgLCBtX3Rl
bXBCdXMoQXVkaW9CdXM6OmNyZWF0ZShudW1iZXJPZkNoYW5uZWxzLCBwcm92aWRlclNpemUpKQot
ewotfQotCi12b2lkIEF1ZGlvUHVsbEZJRk86OmNvbnN1bWUoQXVkaW9CdXMqIGRlc3RpbmF0aW9u
LCBzaXplX3QgZnJhbWVzVG9Db25zdW1lKQotewotICAgIGlmICghZGVzdGluYXRpb24pCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGlmIChmcmFtZXNUb0NvbnN1bWUgPiBtX2ZpZm8uZnJhbWVzSW5G
aWZvKCkpIHsKLSAgICAgICAgLy8gV2UgZG9uJ3QgaGF2ZSBlbm91Z2ggZGF0YSBpbiB0aGUgRklG
TyB0byBmdWxmaWxsIHRoZSByZXF1ZXN0LiBBc2sgZm9yIG1vcmUgZGF0YS4KLSAgICAgICAgZmls
bEJ1ZmZlcihmcmFtZXNUb0NvbnN1bWUgLSBtX2ZpZm8uZnJhbWVzSW5GaWZvKCkpOwotICAgIH0K
LQotICAgIG1fZmlmby5jb25zdW1lKGRlc3RpbmF0aW9uLCBmcmFtZXNUb0NvbnN1bWUpOwotfQot
Ci12b2lkIEF1ZGlvUHVsbEZJRk86OmZpbGxCdWZmZXIoc2l6ZV90IG51bWJlck9mRnJhbWVzKQot
ewotICAgIC8vIEtlZXAgYXNraW5nIHRoZSBwcm92aWRlciB0byBnaXZlIHVzIGRhdGEgdW50aWwg
d2UgaGF2ZSByZWNlaXZlZCBhdCBsZWFzdCB8bnVtYmVyT2ZGcmFtZXN8IG9mCi0gICAgLy8gZGF0
YS4gU3R1ZmYgdGhlIGRhdGEgaW50byB0aGUgRklGTy4KLSAgICBzaXplX3QgZnJhbWVzUHJvdmlk
ZWQgPSAwOwotCi0gICAgd2hpbGUgKGZyYW1lc1Byb3ZpZGVkIDwgbnVtYmVyT2ZGcmFtZXMpIHsK
LSAgICAgICAgbV9wcm92aWRlci5wcm92aWRlSW5wdXQobV90ZW1wQnVzLmdldCgpLCBtX3Byb3Zp
ZGVyU2l6ZSk7Ci0KLSAgICAgICAgbV9maWZvLnB1c2gobV90ZW1wQnVzLmdldCgpKTsKLQotICAg
ICAgICBmcmFtZXNQcm92aWRlZCArPSBtX3Byb3ZpZGVyU2l6ZTsKLSAgICB9Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGQ3NDhmYTQxMzg3Mzc5ZGIzOTViZWFlNjVmODgyYmEyNThlOWZjMjYu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9QdWxsRklGTy5oCisrKyAvZGV2L251bGwKQEAgLTEs
NzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2lmbmRlZiBBdWRpb1B1bGxGSUZPX2gKLSNkZWZpbmUgQXVkaW9QdWxsRklGT19oCi0KLSNp
bmNsdWRlICJBdWRpb0J1cy5oIgotI2luY2x1ZGUgIkF1ZGlvRklGTy5oIgotI2luY2x1ZGUgIkF1
ZGlvU291cmNlUHJvdmlkZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBBIEZJRk8g
KEZpcnN0IEluIEZpcnN0IE91dCkgYnVmZmVyIHRvIGhhbmRsZSBtaXNtYXRjaGVzIGluIGJ1ZmZl
ciBzaXplcyBiZXR3ZWVuIGEgcHJvdmlkZXIgYW5kCi0vLyByZWNlaXZlci4gVGhlIHJlY2VpdmVy
IHdpbGwgInB1bGwiIGRhdGEgZnJvbSB0aGlzIEZJRk8uIElmIGRhdGEgaXMgYWxyZWFkeSBhdmFp
bGFibGUgaW4gdGhlCi0vLyBGSUZPLCBpdCBpcyBwcm92aWRlZCB0byB0aGUgcmVjZWl2ZXIuIElm
IGluc3VmZmljaWVudCBkYXRhIGlzIGF2YWlsYWJsZSB0byBzYXRpc2Z5IHRoZSByZXF1ZXN0LAot
Ly8gdGhlIEZJRk8gd2lsbCBhc2sgdGhlIHByb3ZpZGVyIGZvciBtb3JlIGRhdGEgd2hlbiBuZWNl
c3NhcnkgdG8gZnVsZmlsbCBhIHJlcXVlc3QuIENvbnRyYXN0IHRoaXMKLS8vIHdpdGggYSAicHVz
aCIgRklGTywgd2hlcmUgdGhlIHNlbmRlciBwdXNoZXMgZGF0YSB0byB0aGUgRklGTyB3aGljaCB3
aWxsIGl0c2VsZiBwdXNoIHRoZSBkYXRhIHRvCi0vLyB0aGUgcmVjZWl2ZXIgd2hlbiB0aGUgRklG
TyBpcyBmdWxsLgotY2xhc3MgQXVkaW9QdWxsRklGTyBmaW5hbCB7Ci0gICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgLy8gQ3JlYXRlIGEgRklGTyB0aGF0IGdldHMgZGF0
YSBmcm9tIHxwcm92aWRlcnwuIFRoZSBGSUZPIHdpbGwgYmUgbGFyZ2UgZW5vdWdoIHRvIGhvbGQK
LSAgICAvLyB8Zmlmb0xlbmd0aHwgZnJhbWVzIG9mIGRhdGEgb2YgfG51bWJlck9mQ2hhbm5lbHN8
IGNoYW5uZWxzLiBUaGUgQXVkaW9Tb3VyY2VQcm92aWRlciB3aWxsIGJlCi0gICAgLy8gYXNrZWQg
dG8gcHJvZHVjZSB8cHJvdmlkZXJTaXplfCBmcmFtZXMgd2hlbiB0aGUgRklGTyBuZWVkcyBtb3Jl
IGRhdGEuCi0gICAgQXVkaW9QdWxsRklGTyhBdWRpb1NvdXJjZVByb3ZpZGVyJiBhdWRpb1Byb3Zp
ZGVyLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgZmlmb0xlbmd0aCwgc2l6ZV90
IHByb3ZpZGVyU2l6ZSk7Ci0KLSAgICAvLyBSZWFkIHxmcmFtZXNUb0NvbnN1bWV8IGZyYW1lcyBm
cm9tIHRoZSBGSUZPIGludG8gdGhlIGRlc3RpbmF0aW9uLiBJZiB0aGUgRklGTyBkb2VzIG5vdCBo
YXZlCi0gICAgLy8gZW5vdWdoIGRhdGEsIHdlIGFzayB0aGUgfHByb3ZpZGVyfCB0byBnZXQgbW9y
ZSBkYXRhIHRvIGZ1bGZpbGwgdGhlIHJlcXVlc3QuCi0gICAgdm9pZCBjb25zdW1lKEF1ZGlvQnVz
KiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1RvQ29uc3VtZSk7Ci0KLXByaXZhdGU6Ci0gICAg
Ly8gRmlsbCB0aGUgRklGTyBidWZmZXIgd2l0aCBhdCBsZWFzdCB8bnVtYmVyT2ZGcmFtZXN8IG1v
cmUgZGF0YS4KLSAgICB2b2lkIGZpbGxCdWZmZXIoc2l6ZV90IG51bWJlck9mRnJhbWVzKTsKLQot
ICAgIC8vIFRoZSBwcm92aWRlciBvZiB0aGUgZGF0YSBpbiBvdXIgRklGTy4KLSAgICBBdWRpb1Nv
dXJjZVByb3ZpZGVyJiBtX3Byb3ZpZGVyOwotCi0gICAgLy8gVGhlIGFjdHVhbCBGSUZPCi0gICAg
QXVkaW9GSUZPIG1fZmlmbzsKLQotICAgIC8vIE51bWJlciBvZiBmcmFtZXMgb2YgZGF0YSB0aGF0
IHRoZSBwcm92aWRlciB3aWxsIHByb2R1Y2UgcGVyIGNhbGwuCi0gICAgdW5zaWduZWQgaW50IG1f
cHJvdmlkZXJTaXplOwotCi0gICAgLy8gVGVtcG9yYXJ5IHdvcmtzcGFjZSB0byBob2xkIHRoZSBk
YXRhIGZyb20gdGhlIHByb3ZpZGVyLgotICAgIFJlZlB0cjxBdWRpb0J1cz4gbV90ZW1wQnVzOwot
fTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gQXVkaW9QdWxsRklGTy5o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxS
ZXNhbXBsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVs
UmVzYW1wbGVyLmNwcAppbmRleCA1ZTYyNjhkM2JiMTNiNWYyNzFkMmU2YTg5NjAyODBlNzUzYjlk
YTRkLi44NGVmYWIxNjMxYjFhNjZjZjY1MTljMWEyYjYzZTk2OWMyNmRlZjAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxl
ci5jcHAKQEAgLTkyLDEzICs5MiwxMyBAQCBwcml2YXRlOgogICAgIHNpemVfdCBtX2ZyYW1lc1Rv
UHJvY2VzcyB7IDAgfTsgLy8gVXNlZCB0byB2ZXJpZnkgdGhhdCBhbGwgY2hhbm5lbHMgYXNrIGZv
ciB0aGUgc2FtZSBhbW91bnQuCiB9OwogCi1NdWx0aUNoYW5uZWxSZXNhbXBsZXI6Ok11bHRpQ2hh
bm5lbFJlc2FtcGxlcihkb3VibGUgc2NhbGVGYWN0b3IsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5l
bHMpCitNdWx0aUNoYW5uZWxSZXNhbXBsZXI6Ok11bHRpQ2hhbm5lbFJlc2FtcGxlcihkb3VibGUg
c2NhbGVGYWN0b3IsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIE9wdGlvbmFsPHVuc2lnbmVk
PiByZXF1ZXN0RnJhbWVzKQogICAgIDogbV9udW1iZXJPZkNoYW5uZWxzKG51bWJlck9mQ2hhbm5l
bHMpCiAgICAgLCBtX2NoYW5uZWxQcm92aWRlcihtYWtlVW5pcXVlPENoYW5uZWxQcm92aWRlcj4o
bV9udW1iZXJPZkNoYW5uZWxzKSkKIHsKICAgICAvLyBDcmVhdGUgZWFjaCBjaGFubmVsJ3MgcmVz
YW1wbGVyLgogICAgIGZvciAodW5zaWduZWQgY2hhbm5lbEluZGV4ID0gMDsgY2hhbm5lbEluZGV4
IDwgbnVtYmVyT2ZDaGFubmVsczsgKytjaGFubmVsSW5kZXgpCi0gICAgICAgIG1fa2VybmVscy5h
cHBlbmQobWFrZVVuaXF1ZTxTaW5jUmVzYW1wbGVyPihzY2FsZUZhY3RvcikpOworICAgICAgICBt
X2tlcm5lbHMuYXBwZW5kKG1ha2VVbmlxdWU8U2luY1Jlc2FtcGxlcj4oc2NhbGVGYWN0b3IsIHJl
cXVlc3RGcmFtZXMpKTsKIH0KIAogTXVsdGlDaGFubmVsUmVzYW1wbGVyOjp+TXVsdGlDaGFubmVs
UmVzYW1wbGVyKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuaAppbmRleCBhYzgxYmVjNGJlMGI0MGQyODQx
NzY5YWU4YWNhMDcxODY4YmFiMGNmLi43MTZiYzYwMWU4NzhlM2Y3NGY3NGVhMzRkY2JkMWM3OThj
NGRkY2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNo
YW5uZWxSZXNhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0
aUNoYW5uZWxSZXNhbXBsZXIuaApAQCAtNDAsNyArNDAsOCBAQCBjbGFzcyBBdWRpb0J1czsKIGNs
YXNzIE11bHRpQ2hhbm5lbFJlc2FtcGxlciBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6ICAgCi0gICAgZXhwbGljaXQgTXVsdGlDaGFubmVsUmVzYW1wbGVyKGRv
dWJsZSBzY2FsZUZhY3RvciwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscyk7CisgICAgLy8gcmVx
dWVzdEZyYW1lcyBjb25zdHJvbHMgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciBpbiBmcmFtZXMgd2hl
biBBdWRpb1NvdXJjZVByb3ZpZGVyOjpwcm92aWRlSW5wdXQoKSBpcyBjYWxsZWQuCisgICAgZXhw
bGljaXQgTXVsdGlDaGFubmVsUmVzYW1wbGVyKGRvdWJsZSBzY2FsZUZhY3RvciwgdW5zaWduZWQg
bnVtYmVyT2ZDaGFubmVscywgT3B0aW9uYWw8dW5zaWduZWQ+IHJlcXVlc3RGcmFtZXMgPSBXVEY6
Om51bGxvcHQpOwogICAgIH5NdWx0aUNoYW5uZWxSZXNhbXBsZXIoKTsKIAogICAgIC8vIFByb2Nl
c3MgZ2l2ZW4gQXVkaW9Tb3VyY2VQcm92aWRlciBmb3Igc3RyZWFtaW5nIGFwcGxpY2F0aW9ucy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1B1c2hQdWxsRklGTy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QdXNoUHVsbEZJRk8uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjdlNmU0MDYwMmY2OWRkYzdmMmZhYWU5NTIzZGI2NzBiMmUyODZjYTgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QdXNoUHVsbEZJRk8uY3Bw
CkBAIC0wLDAgKzEsMTI3IEBACisvKgorICogQ29weXJpZ2h0IDIwMTcgVGhlIENocm9taXVtIEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiUHVzaFB1bGxGSUZPLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29u
c3Qgc2l6ZV90IFB1c2hQdWxsRklGTzo6a01heEZJRk9MZW5ndGggPSA2NTUzNjsKKworUHVzaFB1
bGxGSUZPOjpQdXNoUHVsbEZJRk8odW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IGZp
Zm9MZW5ndGgpCisgICAgOiBtX2ZpZm9MZW5ndGgoZmlmb0xlbmd0aCkKK3sKKyAgICBBU1NFUlQo
bV9maWZvTGVuZ3RoIDw9IGtNYXhGSUZPTGVuZ3RoKTsKKyAgICBtX2ZpZm9CdXMgPSBBdWRpb0J1
czo6Y3JlYXRlKG51bWJlck9mQ2hhbm5lbHMsIG1fZmlmb0xlbmd0aCk7Cit9CisKK1B1c2hQdWxs
RklGTzo6flB1c2hQdWxsRklGTygpID0gZGVmYXVsdDsKKworLy8gUHVzaCB0aGUgZGF0YSBmcm9t
IHxpbnB1dEJ1c3wgdG8gRklGTy4gVGhlIHNpemUgb2YgcHVzaCBpcyBkZXRlcm1pbmVkIGJ5Cisv
LyB0aGUgbGVuZ3RoIG9mIHxpbnB1dEJ1c3wuCit2b2lkIFB1c2hQdWxsRklGTzo6cHVzaChjb25z
dCBBdWRpb0J1cyogaW5wdXRCdXMpCit7CisgICAgQVNTRVJUKGlucHV0QnVzKTsKKyAgICBBU1NF
UlQoaW5wdXRCdXMtPmxlbmd0aCgpIDw9IG1fZmlmb0xlbmd0aCk7CisgICAgQVNTRVJUKG1faW5k
ZXhXcml0ZSA8IG1fZmlmb0xlbmd0aCk7CisKKyAgICBjb25zdCBzaXplX3QgaW5wdXRCdXNMZW5n
dGggPSBpbnB1dEJ1cy0+bGVuZ3RoKCk7CisgICAgY29uc3Qgc2l6ZV90IHJlbWFpbmRlciA9IG1f
Zmlmb0xlbmd0aCAtIG1faW5kZXhXcml0ZTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX2ZpZm9CdXMtPm51bWJlck9mQ2hhbm5lbHMoKTsgKytpKSB7CisgICAgICAgIGZsb2F0KiBm
aWZvQnVzQ2hhbm5lbCA9IG1fZmlmb0J1cy0+Y2hhbm5lbChpKS0+bXV0YWJsZURhdGEoKTsKKyAg
ICAgICAgY29uc3QgZmxvYXQqIGlucHV0QnVzQ2hhbm5lbCA9IGlucHV0QnVzLT5jaGFubmVsKGkp
LT5kYXRhKCk7CisgICAgICAgIGlmIChyZW1haW5kZXIgPj0gaW5wdXRCdXNMZW5ndGgpIHsKKyAg
ICAgICAgICAgIC8vIFRoZSByZW1haW5kZXIgaXMgYmlnIGVub3VnaCBmb3IgdGhlIGlucHV0IGRh
dGEuCisgICAgICAgICAgICBtZW1jcHkoZmlmb0J1c0NoYW5uZWwgKyBtX2luZGV4V3JpdGUsIGlu
cHV0QnVzQ2hhbm5lbCwgaW5wdXRCdXNMZW5ndGggKiBzaXplb2YoKmZpZm9CdXNDaGFubmVsKSk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBUaGUgaW5wdXQgZGF0YSBvdmVyZmxv
d3MgdGhlIHJlbWFpbmRlciBzaXplLiBXcmFwIGFyb3VuZCB0aGUgaW5kZXguCisgICAgICAgICAg
ICBtZW1jcHkoZmlmb0J1c0NoYW5uZWwgKyBtX2luZGV4V3JpdGUsIGlucHV0QnVzQ2hhbm5lbCwg
cmVtYWluZGVyICogc2l6ZW9mKCpmaWZvQnVzQ2hhbm5lbCkpOworICAgICAgICAgICAgbWVtY3B5
KGZpZm9CdXNDaGFubmVsLCBpbnB1dEJ1c0NoYW5uZWwgKyByZW1haW5kZXIsIChpbnB1dEJ1c0xl
bmd0aCAtIHJlbWFpbmRlcikgKiBzaXplb2YoKmZpZm9CdXNDaGFubmVsKSk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICAvLyBVcGRhdGUgdGhlIHdyaXRlIGluZGV4OyB3cmFwIGl0IGFyb3VuZCBp
ZiBuZWNlc3NhcnkuCisgICAgbV9pbmRleFdyaXRlID0gKG1faW5kZXhXcml0ZSArIGlucHV0QnVz
TGVuZ3RoKSAlIG1fZmlmb0xlbmd0aDsKKworICAgIC8vIEluIGNhc2Ugb2Ygb3ZlcmZsb3csIG1v
dmUgdGhlIHxpbmRleFJlYWR8IHRvIHRoZSB1cGRhdGVkIHxpbmRleFdyaXRlfCB0bworICAgIC8v
IGF2b2lkIHJlYWRpbmcgb3ZlcndyaXR0ZW4gZnJhbWVzIGJ5IHRoZSBuZXh0IHB1bGwuCisgICAg
aWYgKGlucHV0QnVzTGVuZ3RoID4gbV9maWZvTGVuZ3RoIC0gbV9mcmFtZXNBdmFpbGFibGUpCisg
ICAgICAgIG1faW5kZXhSZWFkID0gbV9pbmRleFdyaXRlOworCisgICAgLy8gVXBkYXRlIHRoZSBu
dW1iZXIgb2YgZnJhbWVzIGF2YWlsYWJsZSBpbiBGSUZPLgorICAgIG1fZnJhbWVzQXZhaWxhYmxl
ID0gc3RkOjptaW4obV9mcmFtZXNBdmFpbGFibGUgKyBpbnB1dEJ1c0xlbmd0aCwgbV9maWZvTGVu
Z3RoKTsKKyAgICBBU1NFUlQoKChtX2luZGV4UmVhZCArIG1fZnJhbWVzQXZhaWxhYmxlKSAlIG1f
Zmlmb0xlbmd0aCkgPT0gbV9pbmRleFdyaXRlKTsKK30KKworLy8gUHVsbCB0aGUgZGF0YSBvdXQg
b2YgRklGTyB0byB8b3V0cHV0QnVzfC4gSWYgcmVtYWluaW5nIGZyYW1lIGluIHRoZSBGSUZPCisv
LyBpcyBsZXNzIHRoYW4gdGhlIGZyYW1lcyB0byBwdWxsLCBwcm92aWRlcyByZW1haW5pbmcgZnJh
bWUgcGx1cyB0aGUgc2lsZW5jZS4KK3NpemVfdCBQdXNoUHVsbEZJRk86OnB1bGwoQXVkaW9CdXMq
IG91dHB1dEJ1cywgc2l6ZV90IGZyYW1lc1JlcXVlc3RlZCkKK3sKKyAgICBBU1NFUlQob3V0cHV0
QnVzKTsKKyAgICBBU1NFUlQoZnJhbWVzUmVxdWVzdGVkIDw9IG91dHB1dEJ1cy0+bGVuZ3RoKCkp
OworICAgIEFTU0VSVChmcmFtZXNSZXF1ZXN0ZWQgPD0gbV9maWZvTGVuZ3RoKTsKKyAgICBBU1NF
UlQobV9pbmRleFJlYWQgPCBtX2ZpZm9MZW5ndGgpOworCisgICAgY29uc3Qgc2l6ZV90IHJlbWFp
bmRlciA9IG1fZmlmb0xlbmd0aCAtIG1faW5kZXhSZWFkOworICAgIGNvbnN0IHNpemVfdCBmcmFt
ZXNUb0ZpbGwgPSBzdGQ6Om1pbihtX2ZyYW1lc0F2YWlsYWJsZSwgZnJhbWVzUmVxdWVzdGVkKTsK
KworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2ZpZm9CdXMtPm51bWJlck9mQ2hhbm5l
bHMoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IGZsb2F0KiBmaWZvQnVzQ2hhbm5lbCA9IG1fZmlm
b0J1cy0+Y2hhbm5lbChpKS0+ZGF0YSgpOworICAgICAgICBmbG9hdCogb3V0cHV0QnVzQ2hhbm5l
bCA9IG91dHB1dEJ1cy0+Y2hhbm5lbChpKS0+bXV0YWJsZURhdGEoKTsKKworICAgICAgICAvLyBG
aWxsIHVwIHRoZSBvdXRwdXQgYnVzIHdpdGggdGhlIGF2YWlsYWJsZSBmcmFtZXMgZmlyc3QuCisg
ICAgICAgIGlmIChyZW1haW5kZXIgPj0gZnJhbWVzVG9GaWxsKSB7CisgICAgICAgICAgICAvLyBU
aGUgcmVtYWluZGVyIGlzIGJpZyBlbm91Z2ggZm9yIHRoZSBmcmFtZXMgdG8gcHVsbC4KKyAgICAg
ICAgICAgIG1lbWNweShvdXRwdXRCdXNDaGFubmVsLCBmaWZvQnVzQ2hhbm5lbCArIG1faW5kZXhS
ZWFkLCBmcmFtZXNUb0ZpbGwgKiBzaXplb2YoKmZpZm9CdXNDaGFubmVsKSk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAvLyBUaGUgZnJhbWVzIHRvIHB1bGwgaXMgYmlnZ2VyIHRoYW4g
dGhlIHJlbWFpbmRlciBzaXplLgorICAgICAgICAgICAgLy8gV3JhcCBhcm91bmQgdGhlIGluZGV4
LgorICAgICAgICAgICAgbWVtY3B5KG91dHB1dEJ1c0NoYW5uZWwsIGZpZm9CdXNDaGFubmVsICsg
bV9pbmRleFJlYWQsIHJlbWFpbmRlciAqIHNpemVvZigqZmlmb0J1c0NoYW5uZWwpKTsKKyAgICAg
ICAgICAgIG1lbWNweShvdXRwdXRCdXNDaGFubmVsICsgcmVtYWluZGVyLCBmaWZvQnVzQ2hhbm5l
bCwgKGZyYW1lc1RvRmlsbCAtIHJlbWFpbmRlcikgKiBzaXplb2YoKmZpZm9CdXNDaGFubmVsKSk7
CisgICAgICAgIH0KKworICAgICAgICAvLyBUaGUgZnJhbWVzIGF2YWlsYWJsZSB3YXMgbm90IGVu
b3VnaCB0byBmdWxmaWxsIHRoZSByZXF1ZXN0ZWQgZnJhbWVzLiBGaWxsCisgICAgICAgIC8vIHRo
ZSByZXN0IG9mIHRoZSBjaGFubmVsIHdpdGggc2lsZW5jZS4KKyAgICAgICAgaWYgKGZyYW1lc1Jl
cXVlc3RlZCA+IGZyYW1lc1RvRmlsbCkKKyAgICAgICAgICAgIG1lbXNldChvdXRwdXRCdXNDaGFu
bmVsICsgZnJhbWVzVG9GaWxsLCAwLCAoZnJhbWVzUmVxdWVzdGVkIC0gZnJhbWVzVG9GaWxsKSAq
IHNpemVvZigqb3V0cHV0QnVzQ2hhbm5lbCkpOworICAgIH0KKworICAgIC8vIFVwZGF0ZSB0aGUg
cmVhZCBpbmRleDsgd3JhcCBpdCBhcm91bmQgaWYgbmVjZXNzYXJ5LgorICAgIG1faW5kZXhSZWFk
ID0gKG1faW5kZXhSZWFkICsgZnJhbWVzVG9GaWxsKSAlIG1fZmlmb0xlbmd0aDsKKworICAgIC8v
IEluIGNhc2Ugb2YgdW5kZXJmbG93LCBtb3ZlIHRoZSB8aW5kZXhXcml0ZXwgdG8gdGhlIHVwZGF0
ZWQgfGluZGV4UmVhZHwuCisgICAgaWYgKGZyYW1lc1JlcXVlc3RlZCA+IGZyYW1lc1RvRmlsbCkK
KyAgICAgICAgbV9pbmRleFdyaXRlID0gbV9pbmRleFJlYWQ7CisKKyAgICAvLyBVcGRhdGUgdGhl
IG51bWJlciBvZiBmcmFtZXMgaW4gRklGTy4KKyAgICBtX2ZyYW1lc0F2YWlsYWJsZSAtPSBmcmFt
ZXNUb0ZpbGw7CisgICAgQVNTRVJUKCgobV9pbmRleFJlYWQgKyBtX2ZyYW1lc0F2YWlsYWJsZSkg
JSBtX2ZpZm9MZW5ndGgpID09IG1faW5kZXhXcml0ZSk7CisKKyAgICAvLyB8ZnJhbWVzUmVxdWVz
dGVkID4gbV9mcmFtZXNBdmFpbGFibGV8IG1lYW5zIHRoZSBmcmFtZXMgaW4gRklGTyBpcyBub3QK
KyAgICAvLyBlbm91Z2ggdG8gZnVsZmlsbCB0aGUgcmVxdWVzdGVkIGZyYW1lcyBmcm9tIHRoZSBh
dWRpbyBkZXZpY2UuCisgICAgcmV0dXJuIGZyYW1lc1JlcXVlc3RlZCA+IG1fZnJhbWVzQXZhaWxh
YmxlID8gZnJhbWVzUmVxdWVzdGVkIC0gbV9mcmFtZXNBdmFpbGFibGUgOiAwOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9QdXNoUHVsbEZJRk8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1B1c2hQ
dWxsRklGTy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZjMGU3ZWNkMWIzODM3ZjJkOTcwY2VjZWFlYWI2ZjAzMDcz
NGY4YjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Q
dXNoUHVsbEZJRk8uaApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IDIwMTcgVGhl
IENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjaW5jbHVkZSAiQXVkaW9CdXMuaCIKKwor
Ly8gUHVzaFB1bGxGSUZPIGNsYXNzIGlzIGFuIGludGVybWVkaWF0ZSBhdWRpbyBzYW1wbGUgc3Rv
cmFnZSBiZXR3ZWVuCisvLyBXZWJLaXQtV2ViQXVkaW8gYW5kIHRoZSByZW5kZXJlci4gVGhlIHJl
bmRlcmVyJ3MgaGFyZHdhcmUgY2FsbGJhY2sgYnVmZmVyIHNpemUKKy8vIHZhcmllcyBvbiB0aGUg
cGxhdGZvcm0sIGJ1dCB0aGUgV2ViQXVkaW8gYWx3YXlzIHJlbmRlcnMgMTI4IGZyYW1lcyAocmVu
ZGVyCisvLyBxdWFudHVtLCBSUSkgdGh1cyBGSUZPIGlzIG5lZWRlZCB0byBoYW5kbGUgdGhlIGdl
bmVyYWwgY2FzZS4KK2NsYXNzIFB1c2hQdWxsRklGTyB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUHVzaFB1bGxGSUZPKTsKKworcHVibGlj
OgorICAgIC8vIE1heGltdW0gRklGTyBsZW5ndGguICg1MTIgcmVuZGVyIHF1YW50YSkKKyAgICBz
dGF0aWMgY29uc3Qgc2l6ZV90IGtNYXhGSUZPTGVuZ3RoOworCisgICAgLy8gfGZpZm9MZW5ndGh8
IGNhbm5vdCBleGNlZWQgfGtNYXhGSUZPTGVuZ3RofC4gT3RoZXJ3aXNlIGl0IGNyYXNoZXMuCisg
ICAgUHVzaFB1bGxGSUZPKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBmaWZvTGVu
Z3RoKTsKKyAgICB+UHVzaFB1bGxGSUZPKCk7CisKKyAgICAvLyBQdXNoZXMgdGhlIHJlbmRlcmVk
IGZyYW1lcyBieSBXZWJBdWRpbyBlbmdpbmUuCisgICAgLy8gIC0gVGhlIHxpbnB1dEJ1c3wgbGVu
Z3RoIGlzIDEyOCBmcmFtZXMgKDEgcmVuZGVyIHF1YW50dW0pLCBmaXhlZC4KKyAgICAvLyAgLSBJ
biBjYXNlIG9mIG92ZXJmbG93IChGSUZPIGZ1bGwgd2hpbGUgcHVzaCksIHRoZSBleGlzdGluZyBm
cmFtZXMgaW4gRklGTworICAgIC8vICAgIHdpbGwgYmUgb3ZlcndyaXR0ZW4gYW5kIHxpbmRleFJl
YWR8IHdpbGwgYmUgZm9yY2libHkgbW92ZWQgdG8KKyAgICAvLyAgICB8aW5kZXhXcml0ZXwgdG8g
YXZvaWQgcmVhZGluZyBvdmVyd3JpdHRlbiBmcmFtZXMuCisgICAgdm9pZCBwdXNoKGNvbnN0IEF1
ZGlvQnVzKiBpbnB1dEJ1cyk7CisKKyAgICAvLyBQdWxscyB8ZnJhbWVzUmVxdWVzdGVkfCBieSB0
aGUgYXVkaW8gZGV2aWNlIHRocmVhZCBhbmQgcmV0dXJucyB0aGUgYWN0dWFsCisgICAgLy8gbnVt
YmVyIG9mIGZyYW1lcyB0byBiZSByZW5kZXJlZCBieSB0aGUgc291cmNlLiAoaS5lLiBXZWJBdWRp
byBncmFwaCkKKyAgICBzaXplX3QgcHVsbChBdWRpb0J1cyogb3V0cHV0QnVzLCBzaXplX3QgZnJh
bWVzUmVxdWVzdGVkKTsKKworICAgIHNpemVfdCBmcmFtZXNBdmFpbGFibGUoKSBjb25zdCB7IHJl
dHVybiBtX2ZyYW1lc0F2YWlsYWJsZTsgfQorICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJl
dHVybiBtX2ZpZm9MZW5ndGg7IH0KKyAgICB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKCkgY29u
c3QgeyByZXR1cm4gbV9maWZvQnVzLT5udW1iZXJPZkNoYW5uZWxzKCk7IH0KKyAgICBBdWRpb0J1
cyogYnVzKCkgY29uc3QgeyByZXR1cm4gbV9maWZvQnVzLmdldCgpOyB9CisKK3ByaXZhdGU6Cisg
ICAgLy8gVGhlIHNpemUgb2YgdGhlIEZJRk8uCisgICAgY29uc3Qgc2l6ZV90IG1fZmlmb0xlbmd0
aCA9IDA7CisKKyAgICBSZWZQdHI8QXVkaW9CdXM+IG1fZmlmb0J1czsKKworICAgIC8vIFRoZSBu
dW1iZXIgb2YgZnJhbWVzIGluIHRoZSBGSUZPIGFjdHVhbGx5IGF2YWlsYWJsZSBmb3IgcHVsbGlu
Zy4KKyAgICBzaXplX3QgbV9mcmFtZXNBdmFpbGFibGUgeyAwIH07CisKKyAgICBzaXplX3QgbV9p
bmRleFJlYWQgeyAwIH07CisgICAgc2l6ZV90IG1faW5kZXhXcml0ZSB7IDAgfTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1NpbmNSZXNhbXBsZXIuY3BwCmluZGV4IDUyMDUyN2I1NGJhNTc4NmQ4Y2ViZGZhYjUzYTQ1
NjhhOTNkZTZlZDguLjI2NTFjNDg3MDk1NzRkOTgyM2NmZGZlNjllODVkNzA2ODJlZDAzOTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwCkBA
IC0zOSw1MSArMzksMTEzIEBACiAjaW5jbHVkZSA8ZW1taW50cmluLmg+CiAjZW5kaWYKIAotLy8g
SW5wdXQgYnVmZmVyIGxheW91dCwgZGl2aWRpbmcgdGhlIHRvdGFsIGJ1ZmZlciBpbnRvIHJlZ2lv
bnMgKHIwIC0gcjUpOgorLy8gSW5pdGlhbCBpbnB1dCBidWZmZXIgbGF5b3V0LCBkaXZpZGluZyBp
bnRvIHJlZ2lvbnMgcjAgdG8gcjQgKG5vdGU6IHIwLCByMworLy8gYW5kIHI0IHdpbGwgbW92ZSBh
ZnRlciB0aGUgZmlyc3QgbG9hZCk6CiAvLwogLy8gfC0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwt
LS0tLS0tLS0tLS0tLS0tfAogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJsb2NrU2l6ZSArIGtlcm5lbFNpemUgLyAyICAgICAgICAgICAgICAgICAg
ICAgICAgICAgCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX3JlcXVlc3RGcmFtZXMKIC8vICAgICAgICAgICAgICAgICAgIDwtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLT4KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByMAorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcjAg
KGR1cmluZyBmaXJzdCBsb2FkKQogLy8KIC8vICAga2VybmVsU2l6ZSAvIDIgICBrZXJuZWxTaXpl
IC8gMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbFNpemUgLyAyICAgICBr
ZXJuZWxTaXplIC8gMiAKIC8vIDwtLS0tLS0tLS0tLS0tLS0+IDwtLS0tLS0tLS0tLS0tLS0+ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPC0tLS0tLS0tLS0tLS0tLT4gPC0tLS0tLS0tLS0t
LS0tLT4KIC8vICAgICAgICAgcjEgICAgICAgICAgICAgICAgcjIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByMyAgICAgICAgICAgICAgICByNAogLy8gCi0vLyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja1NpemUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLT4KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByNQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fYmxvY2tTaXpl
ID09IHI0IC0gcjIKKy8vICAgICAgICAgICAgICAgICAgIDwtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0+CisvLworLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fcmVxdWVzdEZyYW1lcworLy8gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8LS0tLS0tLS0tLS0tLS0tLS0tIC4uLiAtLS0tLS0tLS0tLS0tLS0t
LT4KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByMCAo
ZHVyaW5nIHNlY29uZCBsb2FkKQorLy8KKy8vIE9uIHRoZSBzZWNvbmQgcmVxdWVzdCByMCBzbGlk
ZXMgdG8gdGhlIHJpZ2h0IGJ5IGtlcm5lbFNpemUgLyAyIGFuZCByMywgcjQKKy8vIGFuZCBtX2Js
b2NrU2l6ZSBhcmUgcmVpbml0aWFsaXplZCB2aWEgc3RlcCAoMykgaW4gdGhlIGFsZ29yaXRobSBi
ZWxvdy4KKy8vCisvLyBUaGVzZSBuZXcgcmVnaW9ucyByZW1haW4gY29uc3RhbnQgdW50aWwgYSBG
bHVzaCgpIG9jY3Vycy4gV2hpbGUgY29tcGxpY2F0ZWQsCisvLyB0aGlzIGFsbG93cyB1cyB0byBy
ZWR1Y2Ugaml0dGVyIGJ5IGFsd2F5cyByZXF1ZXN0aW5nIHRoZSBzYW1lIGFtb3VudCBmcm9tIHRo
ZQorLy8gcHJvdmlkZWQgY2FsbGJhY2suCiAKIC8vIFRoZSBBbGdvcml0aG06CiAvLwotLy8gMSkg
Q29uc3VtZSBpbnB1dCBmcmFtZXMgaW50byByMCAocjEgaXMgemVyby1pbml0aWFsaXplZCkuCi0v
LyAyKSBQb3NpdGlvbiBrZXJuZWwgY2VudGVyZWQgYXQgc3RhcnQgb2YgcjAgKHIyKSBhbmQgZ2Vu
ZXJhdGUgb3V0cHV0IGZyYW1lcyB1bnRpbCBrZXJuZWwgaXMgY2VudGVyZWQgYXQgc3RhcnQgb2Yg
cjQuCi0vLyAgICBvciB3ZSd2ZSBmaW5pc2hlZCBnZW5lcmF0aW5nIGFsbCB0aGUgb3V0cHV0IGZy
YW1lcy4KLS8vIDMpIENvcHkgcjMgdG8gcjEgYW5kIHI0IHRvIHIyLgotLy8gNCkgQ29uc3VtZSBp
bnB1dCBmcmFtZXMgaW50byByNSAoemVyby1wYWQgaWYgd2UgcnVuIG91dCBvZiBpbnB1dCkuCi0v
LyA1KSBHb3RvICgyKSB1bnRpbCBhbGwgb2YgaW5wdXQgaXMgY29uc3VtZWQuCisvLyAxKSBBbGxv
Y2F0ZSBpbnB1dF9idWZmZXIgb2Ygc2l6ZTogbV9yZXF1ZXN0RnJhbWVzICsga2VybmVsU2l6ZTsg
dGhpcyBlbnN1cmVzCisvLyAgICB0aGVyZSdzIGVub3VnaCByb29tIHRvIHJlYWQgbV9yZXF1ZXN0
RnJhbWVzIGZyb20gdGhlIGNhbGxiYWNrIGludG8gcmVnaW9uCisvLyAgICByMCAod2hpY2ggd2ls
bCBtb3ZlIGJldHdlZW4gdGhlIGZpcnN0IGFuZCBzdWJzZXF1ZW50IHBhc3NlcykuCisvLworLy8g
MikgTGV0IHIxLCByMiBlYWNoIHJlcHJlc2VudCBoYWxmIHRoZSBrZXJuZWwgY2VudGVyZWQgYXJv
dW5kIHIwOgorLy8KKy8vICAgICAgICByMCA9IG1faW5wdXRCdWZmZXIgKyBrZXJuZWxTaXplIC8g
MgorLy8gICAgICAgIHIxID0gbV9pbnB1dEJ1ZmZlcgorLy8gICAgICAgIHIyID0gcjAKKy8vCisv
LyAgICByMCBpcyBhbHdheXMgbV9yZXF1ZXN0RnJhbWVzIGluIHNpemUuIHIxLCByMiBhcmUga2Vy
bmVsU2l6ZSAvIDIgaW4KKy8vICAgIHNpemUuIHIxIG11c3QgYmUgemVybyBpbml0aWFsaXplZCB0
byBhdm9pZCBjb252b2x1dGlvbiB3aXRoIGdhcmJhZ2UgKHNlZQorLy8gICAgc3RlcCAoNSkgZm9y
IHdoeSkuCisvLworLy8gMykgTGV0IHIzLCByNCBlYWNoIHJlcHJlc2VudCBoYWxmIHRoZSBrZXJu
ZWwgcmlnaHQgYWxpZ25lZCB3aXRoIHRoZSBlbmQgb2YKKy8vICAgIHIwIGFuZCBjaG9vc2UgbV9i
bG9ja1NpemUgYXMgdGhlIGRpc3RhbmNlIGluIGZyYW1lcyBiZXR3ZWVuIHI0IGFuZCByMjoKKy8v
CisvLyAgICAgICAgcjMgPSByMCArIG1fcmVxdWVzdEZyYW1lcyAtIGtlcm5lbFNpemUKKy8vICAg
ICAgICByNCA9IHIwICsgbV9yZXF1ZXN0RnJhbWVzIC0ga2VybmVsU2l6ZSAvIDIKKy8vICAgICAg
ICBtX2Jsb2NrU2l6ZSA9IHI0IC0gcjIgPSBtX3JlcXVlc3RGcmFtZXMgLSBrZXJuZWxTaXplIC8g
MgorLy8KKy8vIDQpIENvbnN1bWUgbV9yZXF1ZXN0RnJhbWVzIGZyYW1lcyBpbnRvIHIwLgorLy8K
Ky8vIDUpIFBvc2l0aW9uIGtlcm5lbCBjZW50ZXJlZCBhdCBzdGFydCBvZiByMiBhbmQgZ2VuZXJh
dGUgb3V0cHV0IGZyYW1lcyB1bnRpbAorLy8gICAgdGhlIGtlcm5lbCBpcyBjZW50ZXJlZCBhdCB0
aGUgc3RhcnQgb2YgcjQgb3Igd2UndmUgZmluaXNoZWQgZ2VuZXJhdGluZworLy8gICAgYWxsIHRo
ZSBvdXRwdXQgZnJhbWVzLgorLy8KKy8vIDYpIFdyYXAgbGVmdCBvdmVyIGRhdGEgZnJvbSB0aGUg
cjMgdG8gcjEgYW5kIHI0IHRvIHIyLgorLy8KKy8vIDcpIElmIHdlJ3JlIG9uIHRoZSBzZWNvbmQg
bG9hZCwgaW4gb3JkZXIgdG8gYXZvaWQgb3ZlcndyaXRpbmcgdGhlIGZyYW1lcyB3ZQorLy8gICAg
anVzdCB3cmFwcGVkIGZyb20gcjQgd2UgbmVlZCB0byBzbGlkZSByMCB0byB0aGUgcmlnaHQgYnkg
dGhlIHNpemUgb2YKKy8vICAgIHI0LCB3aGljaCBpcyBrZXJuZWxTaXplIC8gMjoKKy8vCisvLyAg
ICAgICAgcjAgPSByMCArIGtlcm5lbFNpemUgLyAyID0gbV9pbnB1dEJ1ZmZlciArIGtlcm5lbFNp
emUKKy8vCisvLyAgICByMywgcjQsIGFuZCBtX2Jsb2NrU2l6ZSB0aGVuIG5lZWQgdG8gYmUgcmVp
bml0aWFsaXplZCwgc28gZ290byAoMykuCisvLworLy8gOCkgRWxzZSwgaWYgd2UncmUgbm90IG9u
IHRoZSBzZWNvbmQgbG9hZCwgZ290byAoNCkuCiAvLwogLy8gbm90ZTogd2UncmUgZ2xvc3Npbmcg
b3ZlciBob3cgdGhlIHN1Yi1zYW1wbGUgaGFuZGxpbmcgd29ya3Mgd2l0aCBtX3ZpcnR1YWxTb3Vy
Y2VJbmRleCwgZXRjLgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNpbmNSZXNhbXBsZXI6OlNp
bmNSZXNhbXBsZXIoZG91YmxlIHNjYWxlRmFjdG9yLCB1bnNpZ25lZCBrZXJuZWxTaXplLCB1bnNp
Z25lZCBudW1iZXJPZktlcm5lbE9mZnNldHMpCitjb25zdGV4cHIgdW5zaWduZWQgZGVmYXVsdFJl
cXVlc3RGcmFtZXMgeyA1MTIgfTsKK2NvbnN0ZXhwciB1bnNpZ25lZCBrZXJuZWxTaXplIHsgMzIg
fTsKK2NvbnN0ZXhwciB1bnNpZ25lZCBudW1iZXJPZktlcm5lbE9mZnNldHMgeyAzMiB9OworCitT
aW5jUmVzYW1wbGVyOjpTaW5jUmVzYW1wbGVyKGRvdWJsZSBzY2FsZUZhY3RvciwgT3B0aW9uYWw8
dW5zaWduZWQ+IHJlcXVlc3RGcmFtZXMpCiAgICAgOiBtX3NjYWxlRmFjdG9yKHNjYWxlRmFjdG9y
KQotICAgICwgbV9rZXJuZWxTaXplKGtlcm5lbFNpemUpCi0gICAgLCBtX251bWJlck9mS2VybmVs
T2Zmc2V0cyhudW1iZXJPZktlcm5lbE9mZnNldHMpCi0gICAgLCBtX2tlcm5lbFN0b3JhZ2UobV9r
ZXJuZWxTaXplICogKG1fbnVtYmVyT2ZLZXJuZWxPZmZzZXRzICsgMSkpCi0gICAgLCBtX3ZpcnR1
YWxTb3VyY2VJbmRleCgwKQotICAgICwgbV9ibG9ja1NpemUoNTEyKQotICAgICwgbV9pbnB1dEJ1
ZmZlcihtX2Jsb2NrU2l6ZSArIG1fa2VybmVsU2l6ZSkgLy8gU2VlIGlucHV0IGJ1ZmZlciBsYXlv
dXQgYWJvdmUuCi0gICAgLCBtX3NvdXJjZSgwKQotICAgICwgbV9zb3VyY2VGcmFtZXNBdmFpbGFi
bGUoMCkKLSAgICAsIG1fc291cmNlUHJvdmlkZXIoMCkKLSAgICAsIG1faXNCdWZmZXJQcmltZWQo
ZmFsc2UpCisgICAgLCBtX2tlcm5lbFN0b3JhZ2Uoa2VybmVsU2l6ZSAqIChudW1iZXJPZktlcm5l
bE9mZnNldHMgKyAxKSkKKyAgICAsIG1fcmVxdWVzdEZyYW1lcyhyZXF1ZXN0RnJhbWVzLnZhbHVl
T3IoZGVmYXVsdFJlcXVlc3RGcmFtZXMpKQorICAgICwgbV9pbnB1dEJ1ZmZlcihtX3JlcXVlc3RG
cmFtZXMgKyBrZXJuZWxTaXplKSAvLyBTZWUgaW5wdXQgYnVmZmVyIGxheW91dCBhYm92ZS4KKyAg
ICAsIG1fcjEobV9pbnB1dEJ1ZmZlci5kYXRhKCkpCisgICAgLCBtX3IyKG1faW5wdXRCdWZmZXIu
ZGF0YSgpICsga2VybmVsU2l6ZSAvIDIpCiB7CisgICAgQVNTRVJUKG1fcmVxdWVzdEZyYW1lcyA+
IDApOworICAgIHVwZGF0ZVJlZ2lvbnMoZmFsc2UpOworICAgIEFTU0VSVChtX2Jsb2NrU2l6ZSA+
IGtlcm5lbFNpemUpOwogICAgIGluaXRpYWxpemVLZXJuZWwoKTsKIH0KIAordm9pZCBTaW5jUmVz
YW1wbGVyOjp1cGRhdGVSZWdpb25zKGJvb2wgaXNTZWNvbmRMb2FkKQoreworICAgIC8vIFNldHVw
IHZhcmlvdXMgcmVnaW9uIHBvaW50ZXJzIGluIHRoZSBidWZmZXIgKHNlZSBkaWFncmFtIGFib3Zl
KS4gSWYgd2UncmUKKyAgICAvLyBvbiB0aGUgc2Vjb25kIGxvYWQgd2UgbmVlZCB0byBzbGlkZSBt
X3IwIHRvIHRoZSByaWdodCBieSBrZXJuZWxTaXplIC8gMi4KKyAgICBtX3IwID0gbV9pbnB1dEJ1
ZmZlci5kYXRhKCkgKyAoaXNTZWNvbmRMb2FkID8ga2VybmVsU2l6ZSA6IGtlcm5lbFNpemUgLyAy
KTsKKyAgICBtX3IzID0gbV9yMCArIG1fcmVxdWVzdEZyYW1lcyAtIGtlcm5lbFNpemU7CisgICAg
bV9yNCA9IG1fcjAgKyBtX3JlcXVlc3RGcmFtZXMgLSBrZXJuZWxTaXplIC8gMjsKKyAgICBtX2Js
b2NrU2l6ZSA9IG1fcjQgLSBtX3IyOworCisgICAgLy8gbV9yMSBhdCB0aGUgYmVnaW5uaW5nIG9m
IHRoZSBidWZmZXIuCisgICAgQVNTRVJUKG1fcjEgPT0gbV9pbnB1dEJ1ZmZlci5kYXRhKCkpOwor
ICAgIC8vIG1fcjEgbGVmdCBvZiBtX3IyLCBtX3I0IGxlZnQgb2YgbV9yMyBhbmQgc2l6ZSBjb3Jy
ZWN0LgorICAgIEFTU0VSVCgobV9yMiAtIG1fcjEpID09IChtX3I0IC0gbV9yMykpOworICAgIC8v
IG1fcjIgbGVmdCBvZiByMy4KKyAgICBBU1NFUlQobV9yMiA8PSBtX3IzKTsKK30KKwogdm9pZCBT
aW5jUmVzYW1wbGVyOjppbml0aWFsaXplS2VybmVsKCkKIHsKICAgICAvLyBCbGFja21hbiB3aW5k
b3cgcGFyYW1ldGVycy4KQEAgLTk4LDE2ICsxNjAsMTYgQEAgdm9pZCBTaW5jUmVzYW1wbGVyOjpp
bml0aWFsaXplS2VybmVsKCkKICAgICAvLyBUaGUgc2luYyBmdW5jdGlvbiBpcyBhbiBpZGVhbGl6
ZWQgYnJpY2std2FsbCBmaWx0ZXIsIGJ1dCBzaW5jZSB3ZSdyZSB3aW5kb3dpbmcgaXQgdGhlCiAg
ICAgLy8gdHJhbnNpdGlvbiBmcm9tIHBhc3MgdG8gc3RvcCBkb2VzIG5vdCBoYXBwZW4gcmlnaHQg
YXdheS4gU28gd2Ugc2hvdWxkIGFkanVzdCB0aGUKICAgICAvLyBsb3dwYXNzIGZpbHRlciBjdXRv
ZmYgc2xpZ2h0bHkgZG93bndhcmQgdG8gYXZvaWQgc29tZSBhbGlhc2luZyBhdCB0aGUgdmVyeSBo
aWdoLWVuZC4KLSAgICAvLyBGSVhNRTogdGhpcyB2YWx1ZSBpcyBlbXBpcmljYWwgYW5kIHRvIGJl
IG1vcmUgZXhhY3Qgc2hvdWxkIHZhcnkgZGVwZW5kaW5nIG9uIG1fa2VybmVsU2l6ZS4KKyAgICAv
LyBGSVhNRTogdGhpcyB2YWx1ZSBpcyBlbXBpcmljYWwgYW5kIHRvIGJlIG1vcmUgZXhhY3Qgc2hv
dWxkIHZhcnkgZGVwZW5kaW5nIG9uIGtlcm5lbFNpemUuCiAgICAgc2luY1NjYWxlRmFjdG9yICo9
IDAuOTsKIAotICAgIGludCBuID0gbV9rZXJuZWxTaXplOworICAgIGludCBuID0ga2VybmVsU2l6
ZTsKICAgICBpbnQgaGFsZlNpemUgPSBuIC8gMjsKIAogICAgIC8vIEdlbmVyYXRlcyBhIHNldCBv
ZiB3aW5kb3dlZCBzaW5jKCkga2VybmVscy4KICAgICAvLyBXZSBnZW5lcmF0ZSBhIHJhbmdlIG9m
IHN1Yi1zYW1wbGUgb2Zmc2V0cyBmcm9tIDAuMCB0byAxLjAuCi0gICAgZm9yICh1bnNpZ25lZCBv
ZmZzZXRJbmRleCA9IDA7IG9mZnNldEluZGV4IDw9IG1fbnVtYmVyT2ZLZXJuZWxPZmZzZXRzOyAr
K29mZnNldEluZGV4KSB7Ci0gICAgICAgIGRvdWJsZSBzdWJzYW1wbGVPZmZzZXQgPSBzdGF0aWNf
Y2FzdDxkb3VibGU+KG9mZnNldEluZGV4KSAvIG1fbnVtYmVyT2ZLZXJuZWxPZmZzZXRzOworICAg
IGZvciAodW5zaWduZWQgb2Zmc2V0SW5kZXggPSAwOyBvZmZzZXRJbmRleCA8PSBudW1iZXJPZktl
cm5lbE9mZnNldHM7ICsrb2Zmc2V0SW5kZXgpIHsKKyAgICAgICAgZG91YmxlIHN1YnNhbXBsZU9m
ZnNldCA9IHN0YXRpY19jYXN0PGRvdWJsZT4ob2Zmc2V0SW5kZXgpIC8gbnVtYmVyT2ZLZXJuZWxP
ZmZzZXRzOwogCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKSB7CiAgICAgICAg
ICAgICAvLyBDb21wdXRlIHRoZSBzaW5jKCkgd2l0aCBvZmZzZXQuCkBAIC0xMjAsNyArMTgyLDcg
QEAgdm9pZCBTaW5jUmVzYW1wbGVyOjppbml0aWFsaXplS2VybmVsKCkKICAgICAgICAgICAgIGRv
dWJsZSB3aW5kb3cgPSBhMCAtIGExICogY29zKDIuMCAqIHBpRG91YmxlICogeCkgKyBhMiAqIGNv
cyg0LjAgKiBwaURvdWJsZSAqIHgpOwogCiAgICAgICAgICAgICAvLyBXaW5kb3cgdGhlIHNpbmMo
KSBmdW5jdGlvbiBhbmQgc3RvcmUgYXQgdGhlIGNvcnJlY3Qgb2Zmc2V0LgotICAgICAgICAgICAg
bV9rZXJuZWxTdG9yYWdlW2kgKyBvZmZzZXRJbmRleCAqIG1fa2VybmVsU2l6ZV0gPSBzaW5jICog
d2luZG93OworICAgICAgICAgICAgbV9rZXJuZWxTdG9yYWdlW2kgKyBvZmZzZXRJbmRleCAqIGtl
cm5lbFNpemVdID0gc2luYyAqIHdpbmRvdzsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTE5MCw3
ICsyNTIsNyBAQCB2b2lkIFNpbmNSZXNhbXBsZXI6OnByb2Nlc3MoY29uc3QgZmxvYXQqIHNvdXJj
ZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBudQogICAgIHVuc2lnbmVkIHJlbWFpbmlu
ZyA9IG51bWJlck9mRGVzdGluYXRpb25GcmFtZXM7CiAgICAgCiAgICAgd2hpbGUgKHJlbWFpbmlu
ZykgewotICAgICAgICB1bnNpZ25lZCBmcmFtZXNUaGlzVGltZSA9IHN0ZDo6bWluKHJlbWFpbmlu
ZywgbV9ibG9ja1NpemUpOworICAgICAgICB1bnNpZ25lZCBmcmFtZXNUaGlzVGltZSA9IHN0ZDo6
bWluKHJlbWFpbmluZywgbV9yZXF1ZXN0RnJhbWVzKTsKICAgICAgICAgcHJvY2Vzcygmc291cmNl
UHJvdmlkZXIsIGRlc3RpbmF0aW9uLCBmcmFtZXNUaGlzVGltZSk7CiAgICAgICAgIAogICAgICAg
ICBkZXN0aW5hdGlvbiArPSBmcmFtZXNUaGlzVGltZTsKQEAgLTIwMCwyNyArMjYyLDE4IEBAIHZv
aWQgU2luY1Jlc2FtcGxlcjo6cHJvY2Vzcyhjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVz
dGluYXRpb24sIHVuc2lnbmVkIG51CiAKIHZvaWQgU2luY1Jlc2FtcGxlcjo6cHJvY2VzcyhBdWRp
b1NvdXJjZVByb3ZpZGVyKiBzb3VyY2VQcm92aWRlciwgZmxvYXQqIGRlc3RpbmF0aW9uLCBzaXpl
X3QgZnJhbWVzVG9Qcm9jZXNzKQogewotICAgIGJvb2wgaXNHb29kID0gc291cmNlUHJvdmlkZXIg
JiYgbV9ibG9ja1NpemUgPiBtX2tlcm5lbFNpemUgJiYgbV9pbnB1dEJ1ZmZlci5zaXplKCkgPj0g
bV9ibG9ja1NpemUgKyBtX2tlcm5lbFNpemUgJiYgIShtX2tlcm5lbFNpemUgJSAyKTsKLSAgICBB
U1NFUlQoaXNHb29kKTsKLSAgICBpZiAoIWlzR29vZCkKKyAgICBBU1NFUlQoc291cmNlUHJvdmlk
ZXIpOworICAgIGlmICghc291cmNlUHJvdmlkZXIpCiAgICAgICAgIHJldHVybjsKICAgICAKICAg
ICBtX3NvdXJjZVByb3ZpZGVyID0gc291cmNlUHJvdmlkZXI7CiAKICAgICB1bnNpZ25lZCBudW1i
ZXJPZkRlc3RpbmF0aW9uRnJhbWVzID0gZnJhbWVzVG9Qcm9jZXNzOwotICAgIAotICAgIC8vIFNl
dHVwIHZhcmlvdXMgcmVnaW9uIHBvaW50ZXJzIGluIHRoZSBidWZmZXIgKHNlZSBkaWFncmFtIGFi
b3ZlKS4KLSAgICBmbG9hdCogcjAgPSBtX2lucHV0QnVmZmVyLmRhdGEoKSArIG1fa2VybmVsU2l6
ZSAvIDI7Ci0gICAgZmxvYXQqIHIxID0gbV9pbnB1dEJ1ZmZlci5kYXRhKCk7Ci0gICAgZmxvYXQq
IHIyID0gcjA7Ci0gICAgZmxvYXQqIHIzID0gcjAgKyBtX2Jsb2NrU2l6ZSAtIG1fa2VybmVsU2l6
ZSAvIDI7Ci0gICAgZmxvYXQqIHI0ID0gcjAgKyBtX2Jsb2NrU2l6ZTsKLSAgICBmbG9hdCogcjUg
PSByMCArIG1fa2VybmVsU2l6ZSAvIDI7CiAKICAgICAvLyBTdGVwICgxKQogICAgIC8vIFByaW1l
IHRoZSBpbnB1dCBidWZmZXIgYXQgdGhlIHN0YXJ0IG9mIHRoZSBpbnB1dCBzdHJlYW0uCiAgICAg
aWYgKCFtX2lzQnVmZmVyUHJpbWVkKSB7Ci0gICAgICAgIGNvbnN1bWVTb3VyY2UocjAsIG1fYmxv
Y2tTaXplICsgbV9rZXJuZWxTaXplIC8gMik7CisgICAgICAgIGNvbnN1bWVTb3VyY2UobV9yMCwg
bV9yZXF1ZXN0RnJhbWVzKTsKICAgICAgICAgbV9pc0J1ZmZlclByaW1lZCA9IHRydWU7CiAgICAg
fQogICAgIApAQCAtMjMyLDE0ICsyODUsMTQgQEAgdm9pZCBTaW5jUmVzYW1wbGVyOjpwcm9jZXNz
KEF1ZGlvU291cmNlUHJvdmlkZXIqIHNvdXJjZVByb3ZpZGVyLCBmbG9hdCogZGVzdGluYXQKICAg
ICAgICAgICAgIGludCBzb3VyY2VJbmRleEkgPSBzdGF0aWNfY2FzdDxpbnQ+KG1fdmlydHVhbFNv
dXJjZUluZGV4KTsKICAgICAgICAgICAgIGRvdWJsZSBzdWJzYW1wbGVSZW1haW5kZXIgPSBtX3Zp
cnR1YWxTb3VyY2VJbmRleCAtIHNvdXJjZUluZGV4STsKIAotICAgICAgICAgICAgZG91YmxlIHZp
cnR1YWxPZmZzZXRJbmRleCA9IHN1YnNhbXBsZVJlbWFpbmRlciAqIG1fbnVtYmVyT2ZLZXJuZWxP
ZmZzZXRzOworICAgICAgICAgICAgZG91YmxlIHZpcnR1YWxPZmZzZXRJbmRleCA9IHN1YnNhbXBs
ZVJlbWFpbmRlciAqIG51bWJlck9mS2VybmVsT2Zmc2V0czsKICAgICAgICAgICAgIGludCBvZmZz
ZXRJbmRleCA9IHN0YXRpY19jYXN0PGludD4odmlydHVhbE9mZnNldEluZGV4KTsKICAgICAgICAg
ICAgIAotICAgICAgICAgICAgZmxvYXQqIGsxID0gbV9rZXJuZWxTdG9yYWdlLmRhdGEoKSArIG9m
ZnNldEluZGV4ICogbV9rZXJuZWxTaXplOwotICAgICAgICAgICAgZmxvYXQqIGsyID0gazEgKyBt
X2tlcm5lbFNpemU7CisgICAgICAgICAgICBmbG9hdCogazEgPSBtX2tlcm5lbFN0b3JhZ2UuZGF0
YSgpICsgb2Zmc2V0SW5kZXggKiBrZXJuZWxTaXplOworICAgICAgICAgICAgZmxvYXQqIGsyID0g
azEgKyBrZXJuZWxTaXplOwogCiAgICAgICAgICAgICAvLyBJbml0aWFsaXplIGlucHV0IHBvaW50
ZXIgYmFzZWQgb24gcXVhbnRpemVkIG1fdmlydHVhbFNvdXJjZUluZGV4LgotICAgICAgICAgICAg
ZmxvYXQqIGlucHV0UCA9IHIxICsgc291cmNlSW5kZXhJOworICAgICAgICAgICAgZmxvYXQqIGlu
cHV0UCA9IG1fcjEgKyBzb3VyY2VJbmRleEk7CiAKICAgICAgICAgICAgIC8vIFdlJ2xsIGNvbXB1
dGUgImNvbnZvbHV0aW9ucyIgZm9yIHRoZSB0d28ga2VybmVscyB3aGljaCBzdHJhZGRsZSBtX3Zp
cnR1YWxTb3VyY2VJbmRleAogICAgICAgICAgICAgZmxvYXQgc3VtMSA9IDA7CkBAIC0yNDksNyAr
MzAyLDcgQEAgdm9pZCBTaW5jUmVzYW1wbGVyOjpwcm9jZXNzKEF1ZGlvU291cmNlUHJvdmlkZXIq
IHNvdXJjZVByb3ZpZGVyLCBmbG9hdCogZGVzdGluYXQKICAgICAgICAgICAgIGRvdWJsZSBrZXJu
ZWxJbnRlcnBvbGF0aW9uRmFjdG9yID0gdmlydHVhbE9mZnNldEluZGV4IC0gb2Zmc2V0SW5kZXg7
CiAKICAgICAgICAgICAgIC8vIEdlbmVyYXRlIGEgc2luZ2xlIG91dHB1dCBzYW1wbGUuIAotICAg
ICAgICAgICAgaW50IG4gPSBtX2tlcm5lbFNpemU7CisgICAgICAgICAgICBpbnQgbiA9IGtlcm5l
bFNpemU7CiAKICNkZWZpbmUgQ09OVk9MVkVfT05FX1NBTVBMRSAgICAgIFwKICAgICAgICAgICAg
IGlucHV0ID0gKmlucHV0UCsrOyAgIFwKQEAgLTQ1NSwxNiArNTA4LDIwIEBAIHZvaWQgU2luY1Jl
c2FtcGxlcjo6cHJvY2VzcyhBdWRpb1NvdXJjZVByb3ZpZGVyKiBzb3VyY2VQcm92aWRlciwgZmxv
YXQqIGRlc3RpbmF0CiAgICAgICAgIH0KIAogICAgICAgICAvLyBXcmFwIGJhY2sgYXJvdW5kIHRv
IHRoZSBzdGFydC4KKyAgICAgICAgQVNTRVJUKG1fdmlydHVhbFNvdXJjZUluZGV4ID49IG1fYmxv
Y2tTaXplKTsKICAgICAgICAgbV92aXJ0dWFsU291cmNlSW5kZXggLT0gbV9ibG9ja1NpemU7CiAK
LSAgICAgICAgLy8gU3RlcCAoMykgQ29weSByMyB0byByMSBhbmQgcjQgdG8gcjIuCisgICAgICAg
IC8vIFN0ZXAgKDMpIENvcHkgcjMgdG8gcjEuCiAgICAgICAgIC8vIFRoaXMgd3JhcHMgdGhlIGxh
c3QgaW5wdXQgZnJhbWVzIGJhY2sgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuCi0gICAgICAg
IG1lbWNweShyMSwgcjMsIHNpemVvZihmbG9hdCkgKiAobV9rZXJuZWxTaXplIC8gMikpOwotICAg
ICAgICBtZW1jcHkocjIsIHI0LCBzaXplb2YoZmxvYXQpICogKG1fa2VybmVsU2l6ZSAvIDIpKTsK
KyAgICAgICAgbWVtY3B5KG1fcjEsIG1fcjMsIHNpemVvZihmbG9hdCkgKiBrZXJuZWxTaXplKTsK
KworICAgICAgICAvLyBTdGVwICg0KSAtLSBSZWluaXRpYWxpemUgcmVnaW9ucyBpZiBuZWNlc3Nh
cnkuCisgICAgICAgIGlmIChtX3IwID09IG1fcjIpCisgICAgICAgICAgICB1cGRhdGVSZWdpb25z
KHRydWUpOwogCi0gICAgICAgIC8vIFN0ZXAgKDQpCisgICAgICAgIC8vIFN0ZXAgKDUpCiAgICAg
ICAgIC8vIFJlZnJlc2ggdGhlIGJ1ZmZlciB3aXRoIG1vcmUgaW5wdXQuCi0gICAgICAgIGNvbnN1
bWVTb3VyY2UocjUsIG1fYmxvY2tTaXplKTsKKyAgICAgICAgY29uc3VtZVNvdXJjZShtX3IwLCBt
X3JlcXVlc3RGcmFtZXMpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vU2luY1Jlc2FtcGxlci5oCmluZGV4IGIxNmViNTEzMjU4OGRiNWYxYTkxODU1NjBjZGU5
N2Q4MWRjNGRhMjUuLjkzYmYwNGQ5MGYwMmIyN2M3OTU5ZTFiOTNiMzY3NDJkZGZkOTdjNjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmgKQEAgLTM5
LDExICszOSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNpbmNSZXNhbXBsZXIg
ZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOiAgIAorcHVibGlj
OgogICAgIC8vIHNjYWxlRmFjdG9yID09IHNvdXJjZVNhbXBsZVJhdGUgLyBkZXN0aW5hdGlvblNh
bXBsZVJhdGUKLSAgICAvLyBrZXJuZWxTaXplIGNhbiBiZSBhZGp1c3RlZCBmb3IgcXVhbGl0eSAo
aGlnaGVyIGlzIGJldHRlcikKLSAgICAvLyBudW1iZXJPZktlcm5lbE9mZnNldHMgaXMgdXNlZCBm
b3IgaW50ZXJwb2xhdGlvbiBhbmQgaXMgdGhlIG51bWJlciBvZiBzdWItc2FtcGxlIGtlcm5lbCBz
aGlmdHMuCi0gICAgU2luY1Jlc2FtcGxlcihkb3VibGUgc2NhbGVGYWN0b3IsIHVuc2lnbmVkIGtl
cm5lbFNpemUgPSAzMiwgdW5zaWduZWQgbnVtYmVyT2ZLZXJuZWxPZmZzZXRzID0gMzIpOworICAg
IC8vIHJlcXVlc3RGcmFtZXMgY29udHJvbHMgdGhlIHNpemUgaW4gZnJhbWVzIG9mIHRoZSBidWZm
ZXIgcmVxdWVzdGVkIGJ5IGVhY2ggcHJvdmlkZUlucHV0KCkgY2FsbC4KKyAgICBTaW5jUmVzYW1w
bGVyKGRvdWJsZSBzY2FsZUZhY3RvciwgT3B0aW9uYWw8dW5zaWduZWQ+IHJlcXVlc3RGcmFtZXMg
PSBXVEY6Om51bGxvcHQpOwogICAgIAogICAgIC8vIFByb2Nlc3NlcyBudW1iZXJPZlNvdXJjZUZy
YW1lcyBmcm9tIHNvdXJjZSB0byBwcm9kdWNlIG51bWJlck9mU291cmNlRnJhbWVzIC8gc2NhbGVG
YWN0b3IgZnJhbWVzIGluIGRlc3RpbmF0aW9uLgogICAgIHZvaWQgcHJvY2Vzcyhjb25zdCBmbG9h
dCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIG51bWJlck9mU291cmNlRnJh
bWVzKTsKQEAgLTU0LDEwICs1Myw5IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICB2b2lkIGlu
aXRpYWxpemVLZXJuZWwoKTsKICAgICB2b2lkIGNvbnN1bWVTb3VyY2UoZmxvYXQqIGJ1ZmZlciwg
dW5zaWduZWQgbnVtYmVyT2ZTb3VyY2VGcmFtZXMpOworICAgIHZvaWQgdXBkYXRlUmVnaW9ucyhi
b29sIGlzU2Vjb25kTG9hZCk7CiAgICAgCiAgICAgZG91YmxlIG1fc2NhbGVGYWN0b3I7Ci0gICAg
dW5zaWduZWQgbV9rZXJuZWxTaXplOwotICAgIHVuc2lnbmVkIG1fbnVtYmVyT2ZLZXJuZWxPZmZz
ZXRzOwogCiAgICAgLy8gbV9rZXJuZWxTdG9yYWdlIGhhcyBtX251bWJlck9mS2VybmVsT2Zmc2V0
cyBrZXJuZWxzIGJhY2stdG8tYmFjaywgZWFjaCBvZiBzaXplIG1fa2VybmVsU2l6ZS4KICAgICAv
LyBUaGUga2VybmVsIG9mZnNldHMgYXJlIHN1Yi1zYW1wbGUgc2hpZnRzIG9mIGEgd2luZG93ZWQg
c2luYygpIHNoaWZ0ZWQgZnJvbSAwLjAgdG8gMS4wIHNhbXBsZS4KQEAgLTY1LDIyICs2MywzMyBA
QCBwcm90ZWN0ZWQ6CiAgICAgCiAgICAgLy8gbV92aXJ0dWFsU291cmNlSW5kZXggaXMgYW4gaW5k
ZXggb24gdGhlIHNvdXJjZSBpbnB1dCBidWZmZXIgd2l0aCBzdWItc2FtcGxlIHByZWNpc2lvbi4K
ICAgICAvLyBJdCBtdXN0IGJlIGRvdWJsZSBwcmVjaXNpb24gdG8gYXZvaWQgZHJpZnQuCi0gICAg
ZG91YmxlIG1fdmlydHVhbFNvdXJjZUluZGV4OworICAgIGRvdWJsZSBtX3ZpcnR1YWxTb3VyY2VJ
bmRleCB7IDAgfTsKICAgICAKICAgICAvLyBUaGlzIGlzIHRoZSBudW1iZXIgb2YgZGVzdGluYXRp
b24gZnJhbWVzIHdlIGdlbmVyYXRlIHBlciBwcm9jZXNzaW5nIHBhc3Mgb24gdGhlIGJ1ZmZlci4K
LSAgICB1bnNpZ25lZCBtX2Jsb2NrU2l6ZTsKKyAgICB1bnNpZ25lZCBtX3JlcXVlc3RGcmFtZXM7
CisKKyAgICAvLyBUaGUgbnVtYmVyIG9mIHNvdXJjZSBmcmFtZXMgcHJvY2Vzc2VkIHBlciBwYXNz
LgorICAgIHVuc2lnbmVkIG1fYmxvY2tTaXplIHsgMCB9OwogCiAgICAgLy8gU291cmNlIGlzIGNv
cGllZCBpbnRvIHRoaXMgYnVmZmVyIGZvciBlYWNoIHByb2Nlc3NpbmcgcGFzcy4KICAgICBBdWRp
b0Zsb2F0QXJyYXkgbV9pbnB1dEJ1ZmZlcjsKIAotICAgIGNvbnN0IGZsb2F0KiBtX3NvdXJjZTsK
LSAgICB1bnNpZ25lZCBtX3NvdXJjZUZyYW1lc0F2YWlsYWJsZTsKKyAgICAvLyBQb2ludGVycyB0
byB0aGUgdmFyaW91cyByZWdpb25zIGluc2lkZSB8bV9pbnB1dEJ1ZmZlcnwuIFNlZSB0aGUgZGlh
Z3JhbSBhdAorICAgIC8vIHRoZSB0b3Agb2YgdGhlIC5jcHAgZmlsZSBmb3IgbW9yZSBpbmZvcm1h
dGlvbi4KKyAgICBmbG9hdCogbV9yMCB7IG51bGxwdHIgfTsKKyAgICBmbG9hdCogY29uc3QgbV9y
MSB7IG51bGxwdHIgfTsKKyAgICBmbG9hdCogY29uc3QgbV9yMiB7IG51bGxwdHIgfTsKKyAgICBm
bG9hdCogbV9yMyB7IG51bGxwdHIgfTsKKyAgICBmbG9hdCogbV9yNCB7IG51bGxwdHIgfTsKKwor
ICAgIGNvbnN0IGZsb2F0KiBtX3NvdXJjZSB7IG51bGxwdHIgfTsKKyAgICB1bnNpZ25lZCBtX3Nv
dXJjZUZyYW1lc0F2YWlsYWJsZSB7IDAgfTsKICAgICAKICAgICAvLyBtX3NvdXJjZVByb3ZpZGVy
IGlzIHVzZWQgdG8gcHJvdmlkZSB0aGUgYXVkaW8gaW5wdXQgc3RyZWFtIHRvIHRoZSByZXNhbXBs
ZXIuCi0gICAgQXVkaW9Tb3VyY2VQcm92aWRlciogbV9zb3VyY2VQcm92aWRlcjsgICAgCisgICAg
QXVkaW9Tb3VyY2VQcm92aWRlciogbV9zb3VyY2VQcm92aWRlciB7IG51bGxwdHIgfTsKIAogICAg
IC8vIFRoZSBidWZmZXIgaXMgcHJpbWVkIG9uY2UgYXQgdGhlIHZlcnkgYmVnaW5uaW5nIG9mIHBy
b2Nlc3NpbmcuCi0gICAgYm9vbCBtX2lzQnVmZmVyUHJpbWVkOworICAgIGJvb2wgbV9pc0J1ZmZl
clByaW1lZCB7IGZhbHNlIH07CiAKICAgICBSZWZQdHI8QXVkaW9CdXM+IG1faW50ZXJuYWxCdXM7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVk
aW9EZXN0aW5hdGlvbkNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nv
Y29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKaW5kZXggYWU2MzUwZmMxMWE0Njk0NzhlODBj
MGJmYzMzN2MyMDhiODM5M2U0ZS4uNzc1ZDYyZGU4YWRlNzk5ODM3YjQwNWM5YTQxOTY4MjU0ZWY1
ZDIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVk
aW9EZXN0aW5hdGlvbkNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCkBAIC0yOSwxMyArMjksMTYgQEAKICNp
ZiBFTkFCTEUoV0VCX0FVRElPKQogCiAjaW5jbHVkZSAiQXVkaW9CdXMuaCIKLSNpbmNsdWRlICJB
dWRpb0lPQ2FsbGJhY2suaCIKICNpbmNsdWRlICJBdWRpb1Nlc3Npb24uaCIKICNpbmNsdWRlICJM
b2dnaW5nLmgiCisjaW5jbHVkZSAiTXVsdGlDaGFubmVsUmVzYW1wbGVyLmgiCisjaW5jbHVkZSAi
UHVzaFB1bGxGSUZPLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY29uc3QgaW50IGtSZW5k
ZXJCdWZmZXJTaXplID0gMTI4OworY29uc3RleHByIHNpemVfdCBrUmVuZGVyQnVmZmVyU2l6ZSA9
IDEyODsKKworY29uc3RleHByIHNpemVfdCBmaWZvU2l6ZSA9IDk2ICoga1JlbmRlckJ1ZmZlclNp
emU7CiAKIENyZWF0ZUF1ZGlvRGVzdGluYXRpb25Db2NvYU92ZXJyaWRlIEF1ZGlvRGVzdGluYXRp
b25Db2NvYTo6Y3JlYXRlT3ZlcnJpZGUgPSBudWxscHRyOwogCkBAIC02OCwxNCArNzEsMjQgQEAg
dW5zaWduZWQgbG9uZyBBdWRpb0Rlc3RpbmF0aW9uOjptYXhDaGFubmVsQ291bnQoKQogICAgIHJl
dHVybiBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5tYXhpbXVtTnVtYmVyT2ZPdXRwdXRD
aGFubmVscygpOwogfQogCisvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBiZSBoYXJkY29kaW5nIHRo
ZSBudW1iZXIgb2YgaW5wdXQgY2hhbm5lbHMuCitjb25zdGV4cHIgdW5zaWduZWQgbGVnYWN5TnVt
YmVyT2ZPdXRwdXRDaGFubmVscyB7IDIgfTsKKwogQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpBdWRp
b0Rlc3RpbmF0aW9uQ29jb2EoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywgZmxvYXQgc2FtcGxl
UmF0ZSkKICAgICA6IG1fb3V0cHV0VW5pdCgwKQogICAgICwgbV9jYWxsYmFjayhjYWxsYmFjaykK
LSAgICAsIG1fcmVuZGVyQnVzKEF1ZGlvQnVzOjpjcmVhdGUoMiwga1JlbmRlckJ1ZmZlclNpemUs
IGZhbHNlKS5yZWxlYXNlTm9uTnVsbCgpKQotICAgICwgbV9zcGFyZUJ1cyhBdWRpb0J1czo6Y3Jl
YXRlKDIsIGtSZW5kZXJCdWZmZXJTaXplLCB0cnVlKS5yZWxlYXNlTm9uTnVsbCgpKQotICAgICwg
bV9zYW1wbGVSYXRlKHNhbXBsZVJhdGUpCisgICAgLCBtX291dHB1dEJ1cyhBdWRpb0J1czo6Y3Jl
YXRlKGxlZ2FjeU51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGtSZW5kZXJCdWZmZXJTaXplLCBmYWxz
ZSkucmVsZWFzZU5vbk51bGwoKSkKKyAgICAsIG1fcmVuZGVyQnVzKEF1ZGlvQnVzOjpjcmVhdGUo
bGVnYWN5TnVtYmVyT2ZPdXRwdXRDaGFubmVscywga1JlbmRlckJ1ZmZlclNpemUpLnJlbGVhc2VO
b25OdWxsKCkpCisgICAgLCBtX2ZpZm8obWFrZVVuaXF1ZVJlZjxQdXNoUHVsbEZJRk8+KGxlZ2Fj
eU51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZpZm9TaXplKSkKKyAgICAsIG1fY29udGV4dFNhbXBs
ZVJhdGUoc2FtcGxlUmF0ZSkKIHsKICAgICBjb25maWd1cmUoKTsKKworICAgIGF1dG8gaGFyZHdh
cmVTYW1wbGVSYXRlID0gdGhpcy0+aGFyZHdhcmVTYW1wbGVSYXRlKCk7CisgICAgaWYgKHNhbXBs
ZVJhdGUgIT0gaGFyZHdhcmVTYW1wbGVSYXRlKSB7CisgICAgICAgIGRvdWJsZSBzY2FsZUZhY3Rv
ciA9IHN0YXRpY19jYXN0PGRvdWJsZT4oc2FtcGxlUmF0ZSkgLyBoYXJkd2FyZVNhbXBsZVJhdGU7
CisgICAgICAgIG1fcmVzYW1wbGVyID0gbWFrZVVuaXF1ZTxNdWx0aUNoYW5uZWxSZXNhbXBsZXI+
KHNjYWxlRmFjdG9yLCBsZWdhY3lOdW1iZXJPZk91dHB1dENoYW5uZWxzLCBrUmVuZGVyQnVmZmVy
U2l6ZSk7CisgICAgfQogfQogCiBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6On5BdWRpb0Rlc3RpbmF0
aW9uQ29jb2EoKQpAQCAtMTE2LDExICsxMjksMTEgQEAgdm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ29j
b2E6OnNldElzUGxheWluZyhib29sIGlzUGxheWluZykKICAgICBtX2NhbGxiYWNrLmlzUGxheWlu
Z0RpZENoYW5nZSgpOwogfQogCi12b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6c2V0QXVkaW9T
dHJlYW1CYXNpY0Rlc2NyaXB0aW9uKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYgc3RyZWFt
Rm9ybWF0LCBmbG9hdCBzYW1wbGVSYXRlKQordm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnNl
dEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24m
IHN0cmVhbUZvcm1hdCkKIHsKICAgICBjb25zdCBpbnQgYnl0ZXNQZXJGbG9hdCA9IHNpemVvZihG
bG9hdDMyKTsKICAgICBjb25zdCBpbnQgYml0c1BlckJ5dGUgPSA4OwotICAgIHN0cmVhbUZvcm1h
dC5tU2FtcGxlUmF0ZSA9IHNhbXBsZVJhdGU7CisgICAgc3RyZWFtRm9ybWF0Lm1TYW1wbGVSYXRl
ID0gaGFyZHdhcmVTYW1wbGVSYXRlKCk7CiAgICAgc3RyZWFtRm9ybWF0Lm1Gb3JtYXRJRCA9IGtB
dWRpb0Zvcm1hdExpbmVhclBDTTsKICAgICBzdHJlYW1Gb3JtYXQubUZvcm1hdEZsYWdzID0ga0F1
ZGlvRm9ybWF0RmxhZ3NOYXRpdmVGbG9hdFBhY2tlZCB8IGtBdWRpb0Zvcm1hdEZsYWdJc05vbklu
dGVybGVhdmVkOwogICAgIHN0cmVhbUZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQgPSBieXRlc1BlckZs
b2F0OwpAQCAtMTQzLDQ0ICsxNTYsMzEgQEAgc3RhdGljIHZvaWQgYXNzaWduQXVkaW9CdWZmZXJz
VG9CdXMoQXVkaW9CdWZmZXIqIGJ1ZmZlcnMsIEF1ZGlvQnVzJiBidXMsIFVJbnQzMgogLy8gUHVs
bHMgb24gb3VyIHByb3ZpZGVyIHRvIGdldCByZW5kZXJlZCBhdWRpbyBzdHJlYW0uCiBPU1N0YXR1
cyBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnJlbmRlcihjb25zdCBBdWRpb1RpbWVTdGFtcCogdGlt
ZXN0YW1wLCBVSW50MzIgbnVtYmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCogaW9EYXRhKQog
ewotICAgIEF1ZGlvSU9Qb3NpdGlvbiBvdXRwdXRUaW1lc3RhbXA7CisgICAgaWYgKG1fZmlmby0+
bGVuZ3RoKCkgPCBudW1iZXJPZkZyYW1lcykKKyAgICAgICAgcmV0dXJuIG5vRXJyOworCiAgICAg
aWYgKHRpbWVzdGFtcCkgewotICAgICAgICBvdXRwdXRUaW1lc3RhbXAgPSB7Ci0gICAgICAgICAg
ICBTZWNvbmRzIHsgdGltZXN0YW1wLT5tU2FtcGxlVGltZSAvIG1fc2FtcGxlUmF0ZSB9LAorICAg
ICAgICBtX291dHB1dFRpbWVzdGFtcCA9IHsKKyAgICAgICAgICAgIFNlY29uZHMgeyB0aW1lc3Rh
bXAtPm1TYW1wbGVUaW1lIC8gc2FtcGxlUmF0ZSgpIH0sCiAgICAgICAgICAgICBNb25vdG9uaWNU
aW1lOjpmcm9tTWFjaEFic29sdXRlVGltZSh0aW1lc3RhbXAtPm1Ib3N0VGltZSkKICAgICAgICAg
fTsKLSAgICB9CisgICAgfSBlbHNlCisgICAgICAgIG1fb3V0cHV0VGltZXN0YW1wID0gQXVkaW9J
T1Bvc2l0aW9uIHsgfTsKKwogICAgIGF1dG8qIGJ1ZmZlcnMgPSBpb0RhdGEtPm1CdWZmZXJzOwog
ICAgIFVJbnQzMiBudW1iZXJPZkJ1ZmZlcnMgPSBpb0RhdGEtPm1OdW1iZXJCdWZmZXJzOwotICAg
IFVJbnQzMiBmcmFtZXNSZW1haW5pbmcgPSBudW1iZXJPZkZyYW1lczsKLSAgICBVSW50MzIgZnJh
bWVPZmZzZXQgPSAwOwotICAgIHdoaWxlIChmcmFtZXNSZW1haW5pbmcgPiAwKSB7Ci0gICAgICAg
IGlmIChtX3N0YXJ0U3BhcmVGcmFtZSA8IG1fZW5kU3BhcmVGcmFtZSkgewotICAgICAgICAgICAg
QVNTRVJUKG1fc3RhcnRTcGFyZUZyYW1lIDwgbV9lbmRTcGFyZUZyYW1lKTsKLSAgICAgICAgICAg
IFVJbnQzMiBmcmFtZXNUaGlzVGltZSA9IHN0ZDo6bWluPFVJbnQzMj4obV9lbmRTcGFyZUZyYW1l
IC0gbV9zdGFydFNwYXJlRnJhbWUsIG51bWJlck9mRnJhbWVzKTsKLSAgICAgICAgICAgIGFzc2ln
bkF1ZGlvQnVmZmVyc1RvQnVzKGJ1ZmZlcnMsIG1fcmVuZGVyQnVzLmdldCgpLCBudW1iZXJPZkJ1
ZmZlcnMsIG51bWJlck9mRnJhbWVzLCBmcmFtZU9mZnNldCwgZnJhbWVzVGhpc1RpbWUpOwotICAg
ICAgICAgICAgbV9yZW5kZXJCdXMtPmNvcHlGcm9tUmFuZ2UobV9zcGFyZUJ1cy5nZXQoKSwgbV9z
dGFydFNwYXJlRnJhbWUsIG1fZW5kU3BhcmVGcmFtZSk7Ci0gICAgICAgICAgICBwcm9jZXNzQnVz
QWZ0ZXJSZW5kZXIobV9yZW5kZXJCdXMuZ2V0KCksIGZyYW1lc1RoaXNUaW1lKTsKLSAgICAgICAg
ICAgIGZyYW1lT2Zmc2V0ICs9IGZyYW1lc1RoaXNUaW1lOwotICAgICAgICAgICAgZnJhbWVzUmVt
YWluaW5nIC09IGZyYW1lc1RoaXNUaW1lOwotICAgICAgICAgICAgbV9zdGFydFNwYXJlRnJhbWUg
Kz0gZnJhbWVzVGhpc1RpbWU7Ci0gICAgICAgIH0KLQotICAgICAgICBVSW50MzIgZnJhbWVzVGhp
c1RpbWUgPSBzdGQ6Om1pbjxVSW50MzI+KGtSZW5kZXJCdWZmZXJTaXplLCBmcmFtZXNSZW1haW5p
bmcpOwotICAgICAgICBhc3NpZ25BdWRpb0J1ZmZlcnNUb0J1cyhidWZmZXJzLCBtX3JlbmRlckJ1
cy5nZXQoKSwgbnVtYmVyT2ZCdWZmZXJzLCBudW1iZXJPZkZyYW1lcywgZnJhbWVPZmZzZXQsIGZy
YW1lc1RoaXNUaW1lKTsKLQotICAgICAgICBpZiAoIWZyYW1lc1RoaXNUaW1lKQotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGlmIChmcmFtZXNUaGlzVGltZSA8IGtSZW5kZXJCdWZmZXJTaXpl
KSB7Ci0gICAgICAgICAgICBtX2NhbGxiYWNrLnJlbmRlcigwLCBtX3NwYXJlQnVzLnB0cigpLCBr
UmVuZGVyQnVmZmVyU2l6ZSwgb3V0cHV0VGltZXN0YW1wKTsKLSAgICAgICAgICAgIG1fcmVuZGVy
QnVzLT5jb3B5RnJvbVJhbmdlKG1fc3BhcmVCdXMuZ2V0KCksIDAsIGZyYW1lc1RoaXNUaW1lKTsK
LSAgICAgICAgICAgIG1fc3RhcnRTcGFyZUZyYW1lID0gZnJhbWVzVGhpc1RpbWU7Ci0gICAgICAg
ICAgICBtX2VuZFNwYXJlRnJhbWUgPSBrUmVuZGVyQnVmZmVyU2l6ZTsKLSAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICBtX2NhbGxiYWNrLnJlbmRlcigwLCBtX3JlbmRlckJ1cy5wdHIoKSwgZnJh
bWVzVGhpc1RpbWUsIG91dHB1dFRpbWVzdGFtcCk7Ci0gICAgICAgIHByb2Nlc3NCdXNBZnRlclJl
bmRlcihtX3JlbmRlckJ1cy5nZXQoKSwgZnJhbWVzVGhpc1RpbWUpOwotICAgICAgICBmcmFtZU9m
ZnNldCArPSBmcmFtZXNUaGlzVGltZTsKLSAgICAgICAgZnJhbWVzUmVtYWluaW5nIC09IGZyYW1l
c1RoaXNUaW1lOworCisgICAgLy8gQXNzb2NpYXRlIHRoZSBkZXN0aW5hdGlvbiBkYXRhIGFycmF5
IHdpdGggdGhlIG91dHB1dCBidXMgdGhlbiBmaWxsIHRoZSBGSUZPLgorICAgIGFzc2lnbkF1ZGlv
QnVmZmVyc1RvQnVzKGJ1ZmZlcnMsIG1fb3V0cHV0QnVzLmdldCgpLCBudW1iZXJPZkJ1ZmZlcnMs
IG51bWJlck9mRnJhbWVzLCAwLCBudW1iZXJPZkZyYW1lcyk7CisgICAgc2l6ZV90IGZyYW1lc1Rv
UmVuZGVyID0gbV9maWZvLT5wdWxsKG1fb3V0cHV0QnVzLnB0cigpLCBudW1iZXJPZkZyYW1lcyk7
CisKKyAgICBmb3IgKHNpemVfdCBwdXNoZWRGcmFtZXMgPSAwOyBwdXNoZWRGcmFtZXMgPCBmcmFt
ZXNUb1JlbmRlcjsgcHVzaGVkRnJhbWVzICs9IGtSZW5kZXJCdWZmZXJTaXplKSB7CisgICAgICAg
IGlmIChtX3Jlc2FtcGxlcikKKyAgICAgICAgICAgIG1fcmVzYW1wbGVyLT5wcm9jZXNzKHRoaXMs
IG1fcmVuZGVyQnVzLnB0cigpLCBrUmVuZGVyQnVmZmVyU2l6ZSk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIG1fY2FsbGJhY2sucmVuZGVyKDAsIG1fcmVuZGVyQnVzLnB0cigpLCBrUmVuZGVy
QnVmZmVyU2l6ZSwgbV9vdXRwdXRUaW1lc3RhbXApOworCisgICAgICAgIG1fZmlmby0+cHVzaCht
X3JlbmRlckJ1cy5wdHIoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG5vRXJyOwpAQCAtMTkzLDYg
KzE5MywxMiBAQCBPU1N0YXR1cyBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OmlucHV0UHJvYyh2b2lk
KiB1c2VyRGF0YSwgQXVkaW9Vbml0UmVuZGVyQWN0aW9uRgogICAgIHJldHVybiBhdWRpb091dHB1
dC0+cmVuZGVyKHRpbWVzdGFtcCwgbnVtYmVyT2ZGcmFtZXMsIGlvRGF0YSk7CiB9CiAKK3ZvaWQg
QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpwcm92aWRlSW5wdXQoQXVkaW9CdXMqIGJ1cywgc2l6ZV90
IGZyYW1lc1RvUHJvY2VzcykKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGZyYW1lc1RvUHJvY2Vzcywg
ZnJhbWVzVG9Qcm9jZXNzID09IGtSZW5kZXJCdWZmZXJTaXplKTsKKyAgICBtX2NhbGxiYWNrLnJl
bmRlcigwLCBidXMsIGtSZW5kZXJCdWZmZXJTaXplLCBtX291dHB1dFRpbWVzdGFtcCk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3Rp
bmF0aW9uQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlv
RGVzdGluYXRpb25Db2NvYS5oCmluZGV4IDM5Mjg4ZWE5ZmIzMjRiYmEzMWQxN2MyMzYwOGUxMTVj
YWNjMDMxYWUuLmFmYjYzMDkyNzY1NjAwNGU4ZWE5NTFjZjEzNmExMzA3NzRlMjM1NjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRp
b25Db2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlv
RGVzdGluYXRpb25Db2NvYS5oCkBAIC0yOCwxNyArMjgsMjIgQEAKICNpZiBFTkFCTEUoV0VCX0FV
RElPKQogCiAjaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbi5oIgorI2luY2x1ZGUgIkF1ZGlvSU9D
YWxsYmFjay5oIgorI2luY2x1ZGUgIkF1ZGlvU291cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRlIDxB
dWRpb1VuaXQvQXVkaW9Vbml0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb0J1
czsKK2NsYXNzIE11bHRpQ2hhbm5lbFJlc2FtcGxlcjsKK2NsYXNzIFB1c2hQdWxsRklGTzsKIAog
dXNpbmcgQ3JlYXRlQXVkaW9EZXN0aW5hdGlvbkNvY29hT3ZlcnJpZGUgPSBzdGQ6OnVuaXF1ZV9w
dHI8QXVkaW9EZXN0aW5hdGlvbj4oKikoQXVkaW9JT0NhbGxiYWNrJiwgZmxvYXQgc2FtcGxlUmF0
ZSk7CiAKIC8vIEFuIEF1ZGlvRGVzdGluYXRpb24gdXNpbmcgQ29yZUF1ZGlvJ3MgZGVmYXVsdCBv
dXRwdXQgQXVkaW9Vbml0Ci1jbGFzcyBBdWRpb0Rlc3RpbmF0aW9uQ29jb2EgOiBwdWJsaWMgQXVk
aW9EZXN0aW5hdGlvbiB7CitjbGFzcyBBdWRpb0Rlc3RpbmF0aW9uQ29jb2EgOiBwdWJsaWMgQXVk
aW9EZXN0aW5hdGlvbiwgcHVibGljIEF1ZGlvU291cmNlUHJvdmlkZXIgewogcHVibGljOgogICAg
IEF1ZGlvRGVzdGluYXRpb25Db2NvYShBdWRpb0lPQ2FsbGJhY2smLCBmbG9hdCBzYW1wbGVSYXRl
KTsKICAgICB2aXJ0dWFsIH5BdWRpb0Rlc3RpbmF0aW9uQ29jb2EoKTsKQEAgLTQ5LDE0ICs1NCwx
NCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzZXRJc1BsYXlpbmcoYm9vbCk7CiAKICAgICBib29s
IGlzUGxheWluZygpIGZpbmFsIHsgcmV0dXJuIG1faXNQbGF5aW5nOyB9Ci0gICAgZmxvYXQgc2Ft
cGxlUmF0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQorICAgIGZsb2F0
IHNhbXBsZVJhdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbnRleHRTYW1wbGVSYXRlOyB9
CiAgICAgdW5zaWduZWQgZnJhbWVzUGVyQnVmZmVyKCkgY29uc3QgZmluYWw7CiAgICAgQXVkaW9V
bml0JiBvdXRwdXRVbml0KCkgeyByZXR1cm4gbV9vdXRwdXRVbml0OyB9CiAgICAgCiAgICAgLy8g
RGVmYXVsdE91dHB1dFVuaXQgY2FsbGJhY2sKICAgICBzdGF0aWMgT1NTdGF0dXMgaW5wdXRQcm9j
KHZvaWQqIHVzZXJEYXRhLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFncyosIGNvbnN0IEF1ZGlv
VGltZVN0YW1wKiwgVUludDMyIGJ1c051bWJlciwgVUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRp
b0J1ZmZlckxpc3QqIGlvRGF0YSk7CiAKLSAgICB2b2lkIHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNj
cmlwdGlvbihBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24mLCBmbG9hdCBzYW1wbGVSYXRlKTsK
KyAgICB2b2lkIHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihBdWRpb1N0cmVhbUJhc2lj
RGVzY3JpcHRpb24mKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0KCkgb3ZlcnJpZGU7CkBA
IC02NCw2ICs2OSw5IEBAIHByaXZhdGU6CiAKICAgICBmcmllbmQgc3RkOjp1bmlxdWVfcHRyPEF1
ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShBdWRpb0lPQ2FsbGJhY2sm
LCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCwgdW5zaWduZWQsIGZsb2F0KTsKICAgICAKKyAgICAv
LyBBdWRpb1NvdXJjZVByb3ZpZGVyLgorICAgIHZvaWQgcHJvdmlkZUlucHV0KEF1ZGlvQnVzKiwg
c2l6ZV90IGZyYW1lc1RvUHJvY2VzcykgZmluYWw7CisKICAgICB2b2lkIGNvbmZpZ3VyZSgpOwog
ICAgIHZvaWQgcHJvY2Vzc0J1c0FmdGVyUmVuZGVyKEF1ZGlvQnVzJiwgVUludDMyIG51bWJlck9m
RnJhbWVzKTsKIApAQCAtNzEsMTQgKzc5LDIyIEBAIHByaXZhdGU6CiAKICAgICBBdWRpb1VuaXQg
bV9vdXRwdXRVbml0OwogICAgIEF1ZGlvSU9DYWxsYmFjayYgbV9jYWxsYmFjazsKKworICAgIC8v
IFRvIHBhc3MgdGhlIGRhdGEgZnJvbSBGSUZPIHRvIHRoZSBhdWRpbyBkZXZpY2UgY2FsbGJhY2su
CisgICAgUmVmPEF1ZGlvQnVzPiBtX291dHB1dEJ1czsKKworICAgIC8vIFRvIHB1c2ggdGhlIHJl
bmRlcmVkIHJlc3VsdCBmcm9tIFdlYkF1ZGlvIGdyYXBoIGludG8gdGhlIEZJRk8uCiAgICAgUmVm
PEF1ZGlvQnVzPiBtX3JlbmRlckJ1czsKLSAgICBSZWY8QXVkaW9CdXM+IG1fc3BhcmVCdXM7CiAK
LSAgICBmbG9hdCBtX3NhbXBsZVJhdGU7Ci0gICAgYm9vbCBtX2lzUGxheWluZyB7IGZhbHNlIH07
CisgICAgLy8gUmVzb2x2ZXMgdGhlIGJ1ZmZlciBzaXplIG1pc21hdGNoIGJldHdlZW4gdGhlIFdl
YkF1ZGlvIGVuZ2luZSBhbmQKKyAgICAvLyB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gZnJvbSB0aGUg
YWN0dWFsIGF1ZGlvIGRldmljZS4KKyAgICBVbmlxdWVSZWY8UHVzaFB1bGxGSUZPPiBtX2ZpZm87
CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TXVsdGlDaGFubmVsUmVzYW1wbGVyPiBtX3Jlc2FtcGxl
cjsKKyAgICBBdWRpb0lPUG9zaXRpb24gbV9vdXRwdXRUaW1lc3RhbXA7CiAKLSAgICB1bnNpZ25l
ZCBtX3N0YXJ0U3BhcmVGcmFtZSB7IDAgfTsKLSAgICB1bnNpZ25lZCBtX2VuZFNwYXJlRnJhbWUg
eyAwIH07CisgICAgZmxvYXQgbV9jb250ZXh0U2FtcGxlUmF0ZTsKKyAgICBib29sIG1faXNQbGF5
aW5nIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9T
LmNwcAppbmRleCAzOTI5NTIzNmUzMDNlMGMxODcwNWZmYmVlNTQ2YjQ4OGM1MmFiZWU1Li5jNDcz
M2RlN2Y3NWRhOWFiNmQwODdhMjMxYWQ4ZWI5ODFkYzY4ODhmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3Bw
CkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpjb25maWd1cmUo
KQogICAgIHJlc3VsdCA9IEF1ZGlvVW5pdEdldFByb3BlcnR5KG91dHB1dFVuaXQoKSwga0F1ZGlv
VW5pdFByb3BlcnR5X1N0cmVhbUZvcm1hdCwga0F1ZGlvVW5pdFNjb3BlX091dHB1dCwgMCwgKHZv
aWQqKSZzdHJlYW1Gb3JtYXQsICZzaXplKTsKICAgICBBU1NFUlQoIXJlc3VsdCk7CiAKLSAgICBz
ZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oc3RyZWFtRm9ybWF0LCBzYW1wbGVSYXRlKCkp
OworICAgIHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihzdHJlYW1Gb3JtYXQpOwogCiAg
ICAgcmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkob3V0cHV0VW5pdCgpLCBrQXVkaW9Vbml0
UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICh2b2lkKikm
c3RyZWFtRm9ybWF0LCBzaXplb2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKSk7CiAgICAg
QVNTRVJUKCFyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCmluZGV4IDdhMDFlYWUwNmUyOTAzMmZk
MDU5OGEwMGUzNGRlMjM1N2QyYTU3YTQuLmZmNjk0M2IzODAzYTFiMjU1MmI1OGVjMjcyNTAxNDVj
ZDhlYTQ4YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9B
dWRpb0Rlc3RpbmF0aW9uTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBBdWRp
b0Rlc3RpbmF0aW9uQ29jb2E6OmNvbmZpZ3VyZSgpCiAKICAgICAvLyBTZXQgc3RyZWFtIGZvcm1h
dAogICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1Gb3JtYXQ7Ci0gICAgc2V0
QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKHN0cmVhbUZvcm1hdCwgc2FtcGxlUmF0ZSgpKTsK
KyAgICBzZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oc3RyZWFtRm9ybWF0KTsKIAogICAg
IHJlc3VsdCA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG91dHB1dFVuaXQoKSwga0F1ZGlvVW5pdFBy
b3BlcnR5X1N0cmVhbUZvcm1hdCwga0F1ZGlvVW5pdFNjb3BlX0lucHV0LCAwLCAodm9pZCopJnN0
cmVhbUZvcm1hdCwgc2l6ZW9mKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbikpOwogICAgIEFT
U0VSVCghcmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKaW5kZXggZDgx
NTQ4YTMwYjlkMjJjYWZmOGFhNzg3MGRhYjRiZWZiMjM0YjkwNC4uOGFlYzJlYTNkNGYxNzU5ZGY3
Y2U2NDIzNmMzMmI2ODE1NjQ0ZGY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5j
cHAKQEAgLTUzLDkgKzUzLDYgQEAgV1RGX1dFQUtfTElOS19GT1JDRV9JTVBPUlQod2VibTo6c3dh
cCk7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gRklYTUU6IFJlbW92ZSB0aGlzIG9uY2Ug
a0NNVmlkZW9Db2RlY1R5cGVfVlA5IGlzIGFkZGVkIHRvIENNRm9ybWF0RGVzY3JpcHRpb24uaAot
Y29uc3RleHByIENNVmlkZW9Db2RlY1R5cGUga0NNVmlkZW9Db2RlY1R5cGVfVlA5IHsgJ3ZwMDkn
IH07Ci0KIHVzaW5nIG5hbWVzcGFjZSBQQUw7CiAKIHN0YXRpYyBib29sIGlzV2VibVBhcnNlckF2
YWlsYWJsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
b2NrQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcAppbmRleCA4NjNjNGQ1NGJmOTc4ZDI4ZWI1MTEz
NjcyNDAxOGRkMTcxMzM0Y2QzLi44ZTNhZjAzNTM2YzJkM2I3NmI4NjM1NjhmODc0OTRiNWEzYzFm
NGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tBdWRpb0Rl
c3RpbmF0aW9uQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9j
a0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBNb2NrQXVk
aW9EZXN0aW5hdGlvbkNvY29hOjp0aWNrKCkKIHsKICAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2go
W3RoaXMsIHNhbXBsZVJhdGUgPSBzYW1wbGVSYXRlKCksIG51bWJlck9mRnJhbWVzVG9Qcm9jZXNz
ID0gbV9udW1iZXJPZkZyYW1lc1RvUHJvY2Vzc10gewogICAgICAgICBBdWRpb1N0cmVhbUJhc2lj
RGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OwotICAgICAgICBzZXRBdWRpb1N0cmVhbUJhc2ljRGVz
Y3JpcHRpb24oc3RyZWFtRm9ybWF0LCBzYW1wbGVSYXRlKTsKKyAgICAgICAgc2V0QXVkaW9TdHJl
YW1CYXNpY0Rlc2NyaXB0aW9uKHN0cmVhbUZvcm1hdCk7CiAKICAgICAgICAgV2ViQXVkaW9CdWZm
ZXJMaXN0IHdlYkF1ZGlvQnVmZmVyTGlzdCB7IHN0cmVhbUZvcm1hdCwgbnVtYmVyT2ZGcmFtZXNU
b1Byb2Nlc3MgfTsKICAgICAgICAgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjppbnB1dFByb2ModGhp
cywgMCwgMCwgMCwgbnVtYmVyT2ZGcmFtZXNUb1Byb2Nlc3MsIHdlYkF1ZGlvQnVmZmVyTGlzdC5s
aXN0KCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408576</attachid>
            <date>2020-09-11 17:53:25 -0700</date>
            <delta_ts>2020-09-11 18:29:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216425-20200911175324.patch</filename>
            <type>text/plain</type>
            <size>65723</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2OTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTk4OWVhNTIyNDI0MGRl
ZWVkYTdlYzgzNzVkNzMxMzY0MWQ0MWJkYS4uY2Y1ZWZhOTI4MzQxNjU1Nzg0OTQzYzc1NDcyZDk0
YzcwMmMwNGM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDIwLTA5LTExICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHByb3BlciBzdXBwb3J0
IGZvciBBdWRpb0NvbnRleHRPcHRpb25zLnNhbXBsZVJhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjQyNQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBwcm9wZXIgc3VwcG9ydCBmb3IgQXVkaW9D
b250ZXh0T3B0aW9ucy5zYW1wbGVSYXRlLiBQcmV2aW91c2x5LCBvdXIgQXVkaW9Db250ZXh0IGFs
d2F5cyBydW4KKyAgICAgICAgYXQgdGhlIGhhcmR3YXJlJ3Mgc2FtcGxlUmF0ZSwgbm8gbWF0dGVy
IHdoYXQgdmFsdWUgZm9yIHNldCBmb3IgQXVkaW9Db250ZXh0T3B0aW9ucy5zYW1wbGVSYXRlLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYmFzZWQgb24gdGhlIGZvbGxvd2luZyBDaHJvbWl1bSBj
aGFuZ2VzOgorICAgICAgICAtIGh0dHBzOi8vY2hyb21pdW0tcmV2aWV3Lmdvb2dsZXNvdXJjZS5j
b20vYy9jaHJvbWl1bS9zcmMvKy8xNDgyOTU3CisgICAgICAgIC0gaHR0cHM6Ly9jb2RlcmV2aWV3
LmNocm9taXVtLm9yZy8yNTQ5MDkzMDA5CisgICAgICAgIC0gaHR0cHM6Ly9jb2RlcmV2aWV3LmNo
cm9taXVtLm9yZy8xNDE4OTAzNQorCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0
QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVmYXVsdEF1ZGlv
RGVzdGluYXRpb25Ob2RlOjpjcmVhdGVEZXN0aW5hdGlvbik6CisgICAgICAgIFdoZW4gY3JlYXRp
bmcgYSBBdWRpb0Rlc3RpbmF0aW9uLCBwYXNzIHRoZSByZXF1ZXN0ZWQgQXVkaW9Db250ZXh0IHNh
bXBsZSByYXRlCisgICAgICAgIGluc3RlYWQgb2YgdGhlIGhhcmR3YXJlIHNhbXBsZSByYXRlLgor
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9GSUZPLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmg6IFJlbW92ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vUHVzaFB1bGxGSUZPLmNwcDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vUHVzaFB1bGxGSUZPLmg6IEFkZGVkLgorICAgICAgICBSZXBsYWNlIEF1ZGlv
RklGTyBhbmQgQXVkaW9QdWxsRklGTyB3aXRoIGEgbmV3IFB1c2hQdWxsRklGTyByZXBsYWNlbWVu
dCwgc2ltaWxhcmx5CisgICAgICAgIHRvIHdoYXQgd2FzIGRvbmUgaW4gQ2hyb21pdW0gaW46Cisg
ICAgICAgIC0gaHR0cHM6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8yNTQ5MDkzMDA5CisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TXVsdGlDaGFubmVsUmVzYW1wbGVyOjpNdWx0aUNoYW5uZWxSZXNhbXBsZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2luY1Jlc2FtcGxlcjo6U2luY1Jlc2FtcGxlcik6CisgICAgICAgIChXZWJDb3JlOjpTaW5j
UmVzYW1wbGVyOjp1cGRhdGVSZWdpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbmNSZXNhbXBs
ZXI6OmluaXRpYWxpemVLZXJuZWwpOgorICAgICAgICAoV2ViQ29yZTo6U2luY1Jlc2FtcGxlcjo6
cHJvY2Vzcyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5oOgorICAg
ICAgICBBZGQgcGFyYW1ldGVyIHRvIE11bHRpQ2hhbm5lbFJlc2FtcGxlciAmIFNpbmNSZXNhbXBs
ZXIgdG8gYWxsb3cgdGhlIGNsaWVudCB0byBzcGVjaWZ5CisgICAgICAgIHRoZSBzaXplIG9mIHRo
ZSBidWZmZXIgaW4gZnJhbWVzIHdoZW4gdGhlIHJlc2FtcGxlciBjYWxscyBBdWRpb1NvdXJjZVBy
b3ZpZGVyOjpwcm92aWRlSW5wdXQoKQorICAgICAgICB0byBnZXQgaW5wdXQgZGF0YS4gVGhpcyBp
cyBuZWNlc3NhcnkgYmVjYXVzZSBvdXIgV2ViQXVkaW8gaW1wbGVtZW50YXRpb24gdXNlcyBhIHN0
YXRpYworICAgICAgICBidWZmZXIgc2l6ZSBvZiAxMjggZnJhbWVzLiBUaGlzIGlzIHNpbWlsYXIg
dG8gd2hhdCB3YXMgZG9uZSBpbiBDaHJvbWl1bSBpbjoKKyAgICAgICAgLSBodHRwczovL2NvZGVy
ZXZpZXcuY2hyb21pdW0ub3JnLzE0MTg5MDM1CisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9E
ZXN0aW5hdGlvbkNvY29hOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2EpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpyZW5kZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpwcm92aWRlSW5wdXQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5oOgorICAg
ICAgICAtIEFkb3B0IFB1c2hQdWxsRklGTyB0byByZXNvbHZlIHRoZSBidWZmZXIgc2l6ZSBtaXNt
YXRjaCBiZXR3ZWVuIHRoZSBXZWJBdWRpbyBlbmdpbmUgYW5kCisgICAgICAgICAgdGhlIGNhbGxi
YWNrIGZ1bmN0aW9uIGZyb20gdGhlIGFjdHVhbCBhdWRpbyBkZXZpY2UsIHNpbWlsYXJseSB0byB3
aGF0IHdhcyBkb25lIGluIENocm9taXVtLgorICAgICAgICAtIFdoZW4gdGhlIGNvbnRleHQncyBz
YW1wbGUgcmF0ZSBkaWZmZXJzIGZyb20gdGhlIGhhcmR3YXJlIHNhbXBsZSByYXRlLCBpbnN0YW50
aWF0ZSBhCisgICAgICAgICAgTXVsdGlDaGFubmVsUmVzYW1wbGVyIGFuZCB1c2UgaW4gaW4gcmVu
ZGVyKCkgdG8gZG8gdGhlIHJlc2FtcGxpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9p
b3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3Rp
bmF0aW9uQ29jb2E6OmNvbmZpZ3VyZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1
ZGlvRGVzdGluYXRpb25NYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlv
bkNvY29hOjpjb25maWd1cmUpOgorICAgICAgICBEcm9wIHNhbXBsZVJhdGUgcGFyYW1ldGVyIGFz
IGl0IGlzIG5vIGxvbmdlciBuZWVkZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0F1ZGlvRGVz
dGluYXRpb25Db2NvYTo6dGljayk6CisKIDIwMjAtMDktMTEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBTZXJpYWxpemF0aW9uIHNob3VsZCBoYXZlIGV4Y2Vw
dGlvbiBjaGVja3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCBiMTU5ZTMyZjEx
YmE3OTRmMWZlMTA3NThkOTYwMGVlNmQwODk0MjhlLi40MjNkY2EzMGVkYjQ0MDQwYzE0ZTY5MzE4
NDFkMGYyM2EwOGVjZGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCkBAIC04Miwx
MCArODIsNyBAQCB2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6dW5pbml0aWFsaXpl
KCkKIAogdm9pZCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZURlc3RpbmF0aW9u
KCkKIHsKLSAgICBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUgPSBBdWRpb0Rlc3RpbmF0aW9uOjpo
YXJkd2FyZVNhbXBsZVJhdGUoKTsKLSAgICBMT0coV2ViQXVkaW8sICI+Pj4+IGhhcmR3YXJlU2Ft
cGxlUmF0ZSA9ICVmXG4iLCBoYXJkd2FyZVNhbXBsZVJhdGUpOwotCi0gICAgbV9kZXN0aW5hdGlv
biA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5tZWRpYVN0cmF0ZWd5KCkuY3JlYXRlQXVkaW9EZXN0
aW5hdGlvbigqdGhpcywgbV9pbnB1dERldmljZUlkLCBtX251bWJlck9mSW5wdXRDaGFubmVscywg
Y2hhbm5lbENvdW50KCksIGhhcmR3YXJlU2FtcGxlUmF0ZSk7CisgICAgbV9kZXN0aW5hdGlvbiA9
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5tZWRpYVN0cmF0ZWd5KCkuY3JlYXRlQXVkaW9EZXN0aW5h
dGlvbigqdGhpcywgbV9pbnB1dERldmljZUlkLCBtX251bWJlck9mSW5wdXRDaGFubmVscywgY2hh
bm5lbENvdW50KCksIG1fc2FtcGxlUmF0ZSk7CiB9CiAKIHZvaWQgRGVmYXVsdEF1ZGlvRGVzdGlu
YXRpb25Ob2RlOjplbmFibGVJbnB1dChjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CmluZGV4IDA4NzIxNjA2NjIwNmZlY2UwMWEwMGVlNWI0MzY1NDIyOWIyYWE5ZTQuLjMw
MjkxYjEyZTE3OGYzZDljMzE3MzI5NzkyZjI4Nzk4ZDdkNjc2YWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBA
IC0xNzg4LDkgKzE3ODgsNyBAQCBwbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rpb24uY3Bw
CiBwbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHAKIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5l
bC5jcHAKIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvRFNQS2VybmVsUHJvY2Vzc29yLmNwcAotcGxhdGZv
cm0vYXVkaW8vQXVkaW9GSUZPLmNwcAogcGxhdGZvcm0vYXVkaW8vQXVkaW9IYXJkd2FyZUxpc3Rl
bmVyLmNwcAotcGxhdGZvcm0vYXVkaW8vQXVkaW9QdWxsRklGTy5jcHAKIHBsYXRmb3JtL2F1ZGlv
L0F1ZGlvUmVzYW1wbGVyLmNwcAogcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXJLZXJuZWwu
Y3BwCiBwbGF0Zm9ybS9hdWRpby9BdWRpb1V0aWxpdGllcy5jcHAKQEAgLTE4MTQsNiArMTgxMiw3
IEBAIHBsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHAKIHBsYXRmb3JtL2F1
ZGlvL1Bhbm5lci5jcHAKIHBsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcAog
cGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAorcGxhdGZvcm0v
YXVkaW8vUHVzaFB1bGxGSUZPLmNwcAogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNwcAogcGxhdGZv
cm0vYXVkaW8vUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyLmNwcAogcGxhdGZvcm0vYXVkaW8vUmV2
ZXJiQ29udm9sdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDQ2MzdjZTQ4MmVkNDFjYzgyZTExNjQ3ZDZjY2NiNTA1ODZk
MGVlOTguLmJmMTdkNGY5MTVhODE2NzFiZjUxZGJkMGU4YTMxM2RlOTg1ZGZlMWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI1
MjYsNiArMjUyNiw3IEBACiAJCTgzQzU3OTVEMURBNUMzMDEwMDZGQUNBOCAvKiBTY3JvbGxUb09w
dGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgz
NTBDM0U3MURBNTlCNjIwMDM1NjQ0NiAvKiBTY3JvbGxUb09wdGlvbnMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4M0QzNUFFQzFDNzE4N0ZBMDBG
NzBENUEgLyogWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNEMzVBRUExQzcxODdFRDAwRjcwRDVBIC8qIFhN
TEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQuaCAqLzsgfTsKIAkJODNEMzVBRjIxQzcxOEQ5MDAwRjcw
RDVBIC8qIEpTWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNEMzVBRjAxQzcxOEQ4NDAwRjcwRDVBIC8qIEpT
WE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5oICovOyB9OworCQk4M0Q1MTFGNjI1MEMxQ0JGMDAy
RURDNTEgLyogUHVzaFB1bGxGSUZPLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4M0Q1MTFGNTI1MEMxQ0E4MDAyRURDNTEgLyogUHVzaFB1bGxGSUZPLmgg
Ki87IH07CiAJCTgzREI5RTBGMjREQTE5NDkwMDM3QjQ2OCAvKiBCaXF1YWRGaWx0ZXJUeXBlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0RCOUUwQzI0
REExOEI1MDAzN0I0NjggLyogQmlxdWFkRmlsdGVyVHlwZS5oICovOyB9OwogCQk4M0RCOUUxMDI0
REExOTU3MDAzN0I0NjggLyogQmlxdWFkRmlsdGVyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNEQjlFMEUyNERBMThCNjAwMzdCNDY4IC8q
IEJpcXVhZEZpbHRlck9wdGlvbnMuaCAqLzsgfTsKIAkJODNFMzU5QTIxQkIxMDMxRDAwMkNFQjk4
IC8qIEpTSFRNTFRpbWVFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4M0UzNTlBMDFCQjEwMzFEMDAyQ0VCOTggLyogSlNIVE1MVGltZUVsZW1l
bnQuaCAqLzsgfTsKQEAgLTEwNzA3LDYgKzEwNzA4LDggQEAKIAkJODNEMzVBRUIxQzcxODdFRDAw
RjcwRDVBIC8qIFhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4M0QzNUFFRjFDNzE4RDg0MDBGNzBENUEgLyogSlNYTUxIdHRwUmVxdWVzdEV2
ZW50VGFyZ2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTWE1M
SHR0cFJlcXVlc3RFdmVudFRhcmdldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTgzRDM1QUYwMUM3MThEODQwMEY3MEQ1QSAvKiBKU1hNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNYTUxIdHRwUmVxdWVzdEV2ZW50
VGFyZ2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzRDUxMUYzMjUwQzFDQTgw
MDJFREM1MSAvKiBQdXNoUHVsbEZJRk8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUHVzaFB1bGxGSUZPLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODNENTExRjUyNTBDMUNBODAwMkVEQzUxIC8qIFB1c2hQdWxsRklGTy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQdXNoUHVsbEZJRk8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODNEQjlFMEEyNERBMThCNDAwMzdCNDY4IC8qIEJpcXVhZEZpbHRlclR5cGUuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IEJpcXVhZEZpbHRlclR5cGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4M0RCOUUwQzI0REExOEI1MDAzN0I0NjggLyogQmlxdWFkRmlsdGVyVHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBCaXF1YWRGaWx0ZXJUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTgzREI5RTBEMjREQTE4QjUwMDM3QjQ2OCAvKiBCaXF1YWRGaWx0ZXJPcHRpb25zLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBCaXF1YWRGaWx0ZXJPcHRpb25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTMwMDMzLDYgKzMwMDM2LDggQEAKIAkJCQkwNzBFMDkxODE4NzVFRDkzMDAzQTFEM0MgLyogUGxh
dGZvcm1NZWRpYVNlc3Npb24uaCAqLywKIAkJCQlDREFFOEMwNzE3NDZCOTU3MDA1MzJENzggLyog
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCAqLywKIAkJCQlDREFFOEMwODE3NDZCOTU3
MDA1MzJENzggLyogUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmggKi8sCisJCQkJODNENTEx
RjMyNTBDMUNBODAwMkVEQzUxIC8qIFB1c2hQdWxsRklGTy5jcHAgKi8sCisJCQkJODNENTExRjUy
NTBDMUNBODAwMkVEQzUxIC8qIFB1c2hQdWxsRklGTy5oICovLAogCQkJCUZEMzE2MDZFMTJCMDI2
RjcwMEMxQTM1OSAvKiBSZXZlcmIuY3BwICovLAogCQkJCUZEMzE2MDZGMTJCMDI2RjcwMEMxQTM1
OSAvKiBSZXZlcmIuaCAqLywKIAkJCQlGRDMxNjA3MDEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJi
QWNjdW11bGF0aW9uQnVmZmVyLmNwcCAqLywKQEAgLTMzMjY1LDYgKzMzMjcwLDcgQEAKIAkJCQk1
NzMwM0JFQjIwMDk3RjQwMDAzNTU5NjUgLyogUHVibGljS2V5Q3JlZGVudGlhbFR5cGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTAwODFGRjAwMTZCMEEyRDMwMDhBQUE3QSAvKiBQdWJsaWNTdWZmaXgu
aCBpbiBIZWFkZXJzICovLAogCQkJCTEwRkIwODRCMTRFMTVDN0UwMEEzREI5OCAvKiBQdWJsaWNV
UkxNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk4M0Q1MTFGNjI1MEMxQ0JGMDAyRURDNTEg
LyogUHVzaFB1bGxGSUZPLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NTBBMEJDQTA4NUY2MDM5MDA3
MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNDMUY1OTQxRURG
NjlEMzAwNDEwRDI3IC8qIFF1YWxpZmllZE5hbWVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTE1RTMxRjQxRTBDQjBCNTAwNEIzNzFDIC8qIFF1aWNrTG9vay5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9GSUZPLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMGIzYWE0OTlmNjk4YmI0NDM3ZGJiOTZkZDcyMTU1MGJhMmNjNWZl
Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
MTQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1l
IG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0g
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShXRUJfQVVESU8pCi0KLSNpbmNs
dWRlICJBdWRpb0ZJRk8uaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1BdWRpb0ZJRk86OkF1
ZGlvRklGTyh1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgZmlmb0xlbmd0aCkKLSAg
ICA6IG1fZmlmb0F1ZGlvQnVzKEF1ZGlvQnVzOjpjcmVhdGUobnVtYmVyT2ZDaGFubmVscywgZmlm
b0xlbmd0aCkpCi0gICAgLCBtX2ZpZm9MZW5ndGgoZmlmb0xlbmd0aCkKLSAgICAsIG1fZnJhbWVz
SW5GaWZvKDApCi0gICAgLCBtX3JlYWRJbmRleCgwKQotICAgICwgbV93cml0ZUluZGV4KDApCi17
Ci19Ci0KLXZvaWQgQXVkaW9GSUZPOjpjb25zdW1lKEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwgc2l6
ZV90IGZyYW1lc1RvQ29uc3VtZSkKLXsKLSAgICBib29sIGlzR29vZCA9IGRlc3RpbmF0aW9uICYm
IChmcmFtZXNUb0NvbnN1bWUgPD0gbV9maWZvTGVuZ3RoKSAmJiAoZnJhbWVzVG9Db25zdW1lIDw9
IG1fZnJhbWVzSW5GaWZvKSAmJiAoZGVzdGluYXRpb24tPmxlbmd0aCgpID49IGZyYW1lc1RvQ29u
c3VtZSk7Ci0gICAgQVNTRVJUKGlzR29vZCk7Ci0gICAgaWYgKCFpc0dvb2QpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIC8vIENvcHkgdGhlIHJlcXVlc3RlZCBudW1iZXIgb2Ygc2FtcGxlcyB0byB0
aGUgZGVzdGluYXRpb24uCi0KLSAgICBzaXplX3QgcGFydDFMZW5ndGg7Ci0gICAgc2l6ZV90IHBh
cnQyTGVuZ3RoOwotICAgIGZpbmRXcmFwTGVuZ3RocyhtX3JlYWRJbmRleCwgZnJhbWVzVG9Db25z
dW1lLCBwYXJ0MUxlbmd0aCwgcGFydDJMZW5ndGgpOwotCi0gICAgc2l6ZV90IG51bWJlck9mQ2hh
bm5lbHMgPSBtX2ZpZm9BdWRpb0J1cy0+bnVtYmVyT2ZDaGFubmVscygpOwotCi0gICAgZm9yIChz
aXplX3QgY2hhbm5lbEluZGV4ID0gMDsgY2hhbm5lbEluZGV4IDwgbnVtYmVyT2ZDaGFubmVsczsg
KytjaGFubmVsSW5kZXgpIHsKLSAgICAgICAgZmxvYXQqIGRlc3RpbmF0aW9uRGF0YSA9IGRlc3Rp
bmF0aW9uLT5jaGFubmVsKGNoYW5uZWxJbmRleCktPm11dGFibGVEYXRhKCk7Ci0gICAgICAgIGNv
bnN0IGZsb2F0KiBzb3VyY2VEYXRhID0gbV9maWZvQXVkaW9CdXMtPmNoYW5uZWwoY2hhbm5lbElu
ZGV4KS0+ZGF0YSgpOwotCi0gICAgICAgIGJvb2wgaXNDb3B5R29vZCA9ICgobV9yZWFkSW5kZXgg
PCBtX2ZpZm9MZW5ndGgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAobV9yZWFkSW5k
ZXggKyBwYXJ0MUxlbmd0aCkgPD0gbV9maWZvTGVuZ3RoCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAmJiAocGFydDFMZW5ndGggPD0gZGVzdGluYXRpb24tPmxlbmd0aCgpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJiYgKHBhcnQxTGVuZ3RoICsgcGFydDJMZW5ndGgpIDw9IGRlc3Rp
bmF0aW9uLT5sZW5ndGgoKSk7Ci0gICAgICAgIEFTU0VSVChpc0NvcHlHb29kKTsKLSAgICAgICAg
aWYgKCFpc0NvcHlHb29kKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1lbWNweShk
ZXN0aW5hdGlvbkRhdGEsIHNvdXJjZURhdGEgKyBtX3JlYWRJbmRleCwgcGFydDFMZW5ndGggKiBz
aXplb2YoKnNvdXJjZURhdGEpKTsKLSAgICAgICAgLy8gSGFuZGxlIHdyYXAgYXJvdW5kIG9mIHRo
ZSBGSUZPLCBpZiBuZWVkZWQuCi0gICAgICAgIGlmIChwYXJ0Mkxlbmd0aCkKLSAgICAgICAgICAg
IG1lbWNweShkZXN0aW5hdGlvbkRhdGEgKyBwYXJ0MUxlbmd0aCwgc291cmNlRGF0YSwgcGFydDJM
ZW5ndGggKiBzaXplb2YoKnNvdXJjZURhdGEpKTsKLSAgICB9Ci0gICAgbV9yZWFkSW5kZXggPSB1
cGRhdGVJbmRleChtX3JlYWRJbmRleCwgZnJhbWVzVG9Db25zdW1lKTsKLSAgICBBU1NFUlQobV9m
cmFtZXNJbkZpZm8gPj0gZnJhbWVzVG9Db25zdW1lKTsKLSAgICBtX2ZyYW1lc0luRmlmbyAtPSBm
cmFtZXNUb0NvbnN1bWU7Ci19Ci0KLXZvaWQgQXVkaW9GSUZPOjpwdXNoKGNvbnN0IEF1ZGlvQnVz
KiBzb3VyY2VCdXMpCi17Ci0gICAgLy8gQ29weSB0aGUgc291cmNlQnVzIGludG8gdGhlIEZJRk8g
YnVmZmVyLgotCi0gICAgYm9vbCBpc0dvb2QgPSBzb3VyY2VCdXMgJiYgKG1fZnJhbWVzSW5GaWZv
ICsgc291cmNlQnVzLT5sZW5ndGgoKSA8PSBtX2ZpZm9MZW5ndGgpOwotICAgIGlmICghaXNHb29k
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBzaXplX3Qgc291cmNlTGVuZ3RoID0gc291cmNlQnVz
LT5sZW5ndGgoKTsKLSAgICBzaXplX3QgcGFydDFMZW5ndGg7Ci0gICAgc2l6ZV90IHBhcnQyTGVu
Z3RoOwotICAgIGZpbmRXcmFwTGVuZ3RocyhtX3dyaXRlSW5kZXgsIHNvdXJjZUxlbmd0aCwgcGFy
dDFMZW5ndGgsIHBhcnQyTGVuZ3RoKTsKLQotICAgIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzID0g
bV9maWZvQXVkaW9CdXMtPm51bWJlck9mQ2hhbm5lbHMoKTsKLQotICAgIGZvciAoc2l6ZV90IGNo
YW5uZWxJbmRleCA9IDA7IGNoYW5uZWxJbmRleCA8IG51bWJlck9mQ2hhbm5lbHM7ICsrY2hhbm5l
bEluZGV4KSB7Ci0gICAgICAgIGZsb2F0KiBkZXN0aW5hdGlvbiA9IG1fZmlmb0F1ZGlvQnVzLT5j
aGFubmVsKGNoYW5uZWxJbmRleCktPm11dGFibGVEYXRhKCk7Ci0gICAgICAgIGNvbnN0IGZsb2F0
KiBzb3VyY2UgPSBzb3VyY2VCdXMtPmNoYW5uZWwoY2hhbm5lbEluZGV4KS0+ZGF0YSgpOwotCi0g
ICAgICAgIGJvb2wgaXNDb3B5R29vZCA9ICgobV93cml0ZUluZGV4IDwgbV9maWZvTGVuZ3RoKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKG1fd3JpdGVJbmRleCArIHBhcnQxTGVuZ3Ro
KSA8PSBtX2ZpZm9MZW5ndGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHBhcnQyTGVu
Z3RoIDwgbV9maWZvTGVuZ3RoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBwYXJ0MUxl
bmd0aCArIHBhcnQyTGVuZ3RoIDw9IHNvdXJjZUxlbmd0aCk7Ci0gICAgICAgIEFTU0VSVChpc0Nv
cHlHb29kKTsKLSAgICAgICAgaWYgKCFpc0NvcHlHb29kKQotICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgIG1lbWNweShkZXN0aW5hdGlvbiArIG1fd3JpdGVJbmRleCwgc291cmNlLCBwYXJ0
MUxlbmd0aCAqIHNpemVvZigqZGVzdGluYXRpb24pKTsKLQotICAgICAgICAvLyBIYW5kbGUgd3Jh
cCBhcm91bmQgb2YgdGhlIEZJRk8sIGlmIG5lZWRlZC4KLSAgICAgICAgaWYgKHBhcnQyTGVuZ3Ro
KQotICAgICAgICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uLCBzb3VyY2UgKyBwYXJ0MUxlbmd0aCwg
cGFydDJMZW5ndGggKiBzaXplb2YoKmRlc3RpbmF0aW9uKSk7Ci0gICAgfQotICAgICAgICAKLSAg
ICBtX2ZyYW1lc0luRmlmbyArPSBzb3VyY2VMZW5ndGg7Ci0gICAgQVNTRVJUKG1fZnJhbWVzSW5G
aWZvIDw9IG1fZmlmb0xlbmd0aCk7Ci0gICAgbV93cml0ZUluZGV4ID0gdXBkYXRlSW5kZXgobV93
cml0ZUluZGV4LCBzb3VyY2VMZW5ndGgpOwotfQotCi12b2lkIEF1ZGlvRklGTzo6ZmluZFdyYXBM
ZW5ndGhzKHNpemVfdCBpbmRleCwgc2l6ZV90IHNpemUsIHNpemVfdCYgcGFydDFMZW5ndGgsIHNp
emVfdCYgcGFydDJMZW5ndGgpCi17Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJ
T04oaW5kZXggPCBtX2ZpZm9MZW5ndGggJiYgc2l6ZSA8PSBtX2ZpZm9MZW5ndGgpOwotICAgIGlm
IChpbmRleCA8IG1fZmlmb0xlbmd0aCAmJiBzaXplIDw9IG1fZmlmb0xlbmd0aCkgewotICAgICAg
ICBpZiAoaW5kZXggKyBzaXplID4gbV9maWZvTGVuZ3RoKSB7Ci0gICAgICAgICAgICAvLyBOZWVk
IHRvIHdyYXAuIEZpZ3VyZSBvdXQgdGhlIGxlbmd0aCBvZiBlYWNoIHBpZWNlLgotICAgICAgICAg
ICAgcGFydDFMZW5ndGggPSBtX2ZpZm9MZW5ndGggLSBpbmRleDsKLSAgICAgICAgICAgIHBhcnQy
TGVuZ3RoID0gc2l6ZSAtIHBhcnQxTGVuZ3RoOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgLy8gTm8gd3JhcCBuZWVkZWQuCi0gICAgICAgICAgICBwYXJ0MUxlbmd0aCA9IHNpemU7Ci0g
ICAgICAgICAgICBwYXJ0Mkxlbmd0aCA9IDA7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAg
ICAgICAvLyBJbnZhbGlkIHZhbHVlcyBmb3IgaW5kZXggb3Igc2l6ZS4gU2V0IHRoZSBwYXJ0IGxl
bmd0aHMgdG8gemVybyBzbyBub3RoaW5nIGlzIGNvcGllZC4KLSAgICAgICAgcGFydDFMZW5ndGgg
PSAwOwotICAgICAgICBwYXJ0Mkxlbmd0aCA9IDA7Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9GSUZPLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MGY0MzhkZDdkMGZhNTlmYjY0NGQ0ZGY1NzJmNTU5ZmQ2NjMwOGJkMy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb0ZJRk8uaAorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgQXVkaW9GSUZP
X2gKLSNkZWZpbmUgQXVkaW9GSUZPX2gKLQotI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQXVkaW9GSUZPIGZpbmFsIHsKLSAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICAvLyBDcmVhdGUgYSBGSUZPIGxhcmdlIGVub3Vn
aCB0byBob2xkIHxmaWZvTGVuZ3RofCBmcmFtZXMgb2YgZGF0YSBvZiB8bnVtYmVyT2ZDaGFubmVs
c3wgY2hhbm5lbHMuCi0gICAgQXVkaW9GSUZPKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNp
emVfdCBmaWZvTGVuZ3RoKTsKLQotICAgIC8vIFB1c2ggdGhlIGRhdGEgZnJvbSB0aGUgYnVzIGlu
dG8gdGhlIEZJRk8uCi0gICAgdm9pZCBwdXNoKGNvbnN0IEF1ZGlvQnVzKik7Ci0KLSAgICAvLyBD
b25zdW1lIHxmcmFtZXNUb0NvbnN1bWV8IGZyYW1lcyBvZiBkYXRhIGZyb20gdGhlIEZJRk8gYW5k
IHB1dCB0aGVtIGluIHxkZXN0aW5hdGlvbnwuIFRoZQotICAgIC8vIGNvcnJlc3BvbmRpbmcgZnJh
bWVzIGFyZSByZW1vdmVkIGZyb20gdGhlIEZJRk8uCi0gICAgdm9pZCBjb25zdW1lKEF1ZGlvQnVz
KiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1RvQ29uc3VtZSk7Ci0KLSAgICAvLyBOdW1iZXIg
b2YgZnJhbWVzIG9mIGRhdGEgdGhhdCBhcmUgY3VycmVudGx5IGluIHRoZSBGSUZPLgotICAgIHNp
emVfdCBmcmFtZXNJbkZpZm8oKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lc0luRmlmbzsgfQotCi1w
cml2YXRlOgotICAgIC8vIFVwZGF0ZSB0aGUgRklGTyBpbmRleCBieSB0aGUgc3RlcCwgd2l0aCBh
cHByb3ByaWF0ZSB3cmFwcGluZyBhcm91bmQgdGhlIGVuZHBvaW50LgotICAgIGludCB1cGRhdGVJ
bmRleChpbnQgaW5kZXgsIGludCBzdGVwKSB7IHJldHVybiAoaW5kZXggKyBzdGVwKSAlIG1fZmlm
b0xlbmd0aDsgfQotCi0gICAgdm9pZCBmaW5kV3JhcExlbmd0aHMoc2l6ZV90IGluZGV4LCBzaXpl
X3QgcHJvdmlkZXJTaXplLCBzaXplX3QmIHBhcnQxTGVuZ3RoLCBzaXplX3QmIHBhcnQyTGVuZ3Ro
KTsKLSAgICAKLSAgICAvLyBUaGUgRklGTyBpdHNlbGYuIEluIHJlYWxpdHksIHRoZSBGSUZPIGlz
IGEgY2lyY3VsYXIgYnVmZmVyLgotICAgIFJlZlB0cjxBdWRpb0J1cz4gbV9maWZvQXVkaW9CdXM7
Ci0KLSAgICAvLyBUaGUgdG90YWwgYXZhaWxhYmxlIHNwYWNlIGluIHRoZSBGSUZPLgotICAgIHNp
emVfdCBtX2ZpZm9MZW5ndGg7Ci0KLSAgICAvLyBUaGUgbnVtYmVyIG9mIGFjdHVhbCBlbGVtZW50
cyBpbiB0aGUgRklGTwotICAgIHNpemVfdCBtX2ZyYW1lc0luRmlmbzsKLQotICAgIC8vIFdoZXJl
IHRvIHN0YXJ0IHJlYWRpbmcgZnJvbSB0aGUgRklGTy4KLSAgICBzaXplX3QgbV9yZWFkSW5kZXg7
Ci0KLSAgICAvLyBXaGVyZSB0byBzdGFydCB3cml0aW5nIHRvIHRoZSBGSUZPLgotICAgIHNpemVf
dCBtX3dyaXRlSW5kZXg7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBBdWRpb0ZJRk8uaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9QdWxsRklGTy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1B1
bGxGSUZPLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmIxYTYyMjI2YjlmODE3
MmI3ZmM2MGRjMjIwMjA0NjA1OWIzNTg3YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxG
SUZPLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0
aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lm
IEVOQUJMRShXRUJfQVVESU8pCi0KLSNpbmNsdWRlICJBdWRpb1B1bGxGSUZPLmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotQXVkaW9QdWxsRklGTzo6QXVkaW9QdWxsRklGTyhBdWRpb1NvdXJj
ZVByb3ZpZGVyJiBhdWRpb1Byb3ZpZGVyLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXpl
X3QgZmlmb0xlbmd0aCwgc2l6ZV90IHByb3ZpZGVyU2l6ZSkKLSAgICA6IG1fcHJvdmlkZXIoYXVk
aW9Qcm92aWRlcikKLSAgICAsIG1fZmlmbyhudW1iZXJPZkNoYW5uZWxzLCBmaWZvTGVuZ3RoKQot
ICAgICwgbV9wcm92aWRlclNpemUocHJvdmlkZXJTaXplKQotICAgICwgbV90ZW1wQnVzKEF1ZGlv
QnVzOjpjcmVhdGUobnVtYmVyT2ZDaGFubmVscywgcHJvdmlkZXJTaXplKSkKLXsKLX0KLQotdm9p
ZCBBdWRpb1B1bGxGSUZPOjpjb25zdW1lKEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZy
YW1lc1RvQ29uc3VtZSkKLXsKLSAgICBpZiAoIWRlc3RpbmF0aW9uKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBpZiAoZnJhbWVzVG9Db25zdW1lID4gbV9maWZvLmZyYW1lc0luRmlmbygpKSB7Ci0g
ICAgICAgIC8vIFdlIGRvbid0IGhhdmUgZW5vdWdoIGRhdGEgaW4gdGhlIEZJRk8gdG8gZnVsZmls
bCB0aGUgcmVxdWVzdC4gQXNrIGZvciBtb3JlIGRhdGEuCi0gICAgICAgIGZpbGxCdWZmZXIoZnJh
bWVzVG9Db25zdW1lIC0gbV9maWZvLmZyYW1lc0luRmlmbygpKTsKLSAgICB9Ci0KLSAgICBtX2Zp
Zm8uY29uc3VtZShkZXN0aW5hdGlvbiwgZnJhbWVzVG9Db25zdW1lKTsKLX0KLQotdm9pZCBBdWRp
b1B1bGxGSUZPOjpmaWxsQnVmZmVyKHNpemVfdCBudW1iZXJPZkZyYW1lcykKLXsKLSAgICAvLyBL
ZWVwIGFza2luZyB0aGUgcHJvdmlkZXIgdG8gZ2l2ZSB1cyBkYXRhIHVudGlsIHdlIGhhdmUgcmVj
ZWl2ZWQgYXQgbGVhc3QgfG51bWJlck9mRnJhbWVzfCBvZgotICAgIC8vIGRhdGEuIFN0dWZmIHRo
ZSBkYXRhIGludG8gdGhlIEZJRk8uCi0gICAgc2l6ZV90IGZyYW1lc1Byb3ZpZGVkID0gMDsKLQot
ICAgIHdoaWxlIChmcmFtZXNQcm92aWRlZCA8IG51bWJlck9mRnJhbWVzKSB7Ci0gICAgICAgIG1f
cHJvdmlkZXIucHJvdmlkZUlucHV0KG1fdGVtcEJ1cy5nZXQoKSwgbV9wcm92aWRlclNpemUpOwot
Ci0gICAgICAgIG1fZmlmby5wdXNoKG1fdGVtcEJ1cy5nZXQoKSk7Ci0KLSAgICAgICAgZnJhbWVz
UHJvdmlkZWQgKz0gbV9wcm92aWRlclNpemU7Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9QdWxsRklGTy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9QdWxsRklGTy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBkNzQ4ZmE0MTM4NzM3OWRiMzk1YmVhZTY1Zjg4MmJhMjU4ZTlmYzI2Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0F1ZGlvUHVsbEZJRk8uaAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIElu
Yy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYg
QXVkaW9QdWxsRklGT19oCi0jZGVmaW5lIEF1ZGlvUHVsbEZJRk9faAotCi0jaW5jbHVkZSAiQXVk
aW9CdXMuaCIKLSNpbmNsdWRlICJBdWRpb0ZJRk8uaCIKLSNpbmNsdWRlICJBdWRpb1NvdXJjZVBy
b3ZpZGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gQSBGSUZPIChGaXJzdCBJbiBG
aXJzdCBPdXQpIGJ1ZmZlciB0byBoYW5kbGUgbWlzbWF0Y2hlcyBpbiBidWZmZXIgc2l6ZXMgYmV0
d2VlbiBhIHByb3ZpZGVyIGFuZAotLy8gcmVjZWl2ZXIuIFRoZSByZWNlaXZlciB3aWxsICJwdWxs
IiBkYXRhIGZyb20gdGhpcyBGSUZPLiBJZiBkYXRhIGlzIGFscmVhZHkgYXZhaWxhYmxlIGluIHRo
ZQotLy8gRklGTywgaXQgaXMgcHJvdmlkZWQgdG8gdGhlIHJlY2VpdmVyLiBJZiBpbnN1ZmZpY2ll
bnQgZGF0YSBpcyBhdmFpbGFibGUgdG8gc2F0aXNmeSB0aGUgcmVxdWVzdCwKLS8vIHRoZSBGSUZP
IHdpbGwgYXNrIHRoZSBwcm92aWRlciBmb3IgbW9yZSBkYXRhIHdoZW4gbmVjZXNzYXJ5IHRvIGZ1
bGZpbGwgYSByZXF1ZXN0LiBDb250cmFzdCB0aGlzCi0vLyB3aXRoIGEgInB1c2giIEZJRk8sIHdo
ZXJlIHRoZSBzZW5kZXIgcHVzaGVzIGRhdGEgdG8gdGhlIEZJRk8gd2hpY2ggd2lsbCBpdHNlbGYg
cHVzaCB0aGUgZGF0YSB0bwotLy8gdGhlIHJlY2VpdmVyIHdoZW4gdGhlIEZJRk8gaXMgZnVsbC4K
LWNsYXNzIEF1ZGlvUHVsbEZJRk8gZmluYWwgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwotcHVibGljOgotICAgIC8vIENyZWF0ZSBhIEZJRk8gdGhhdCBnZXRzIGRhdGEgZnJvbSB8cHJv
dmlkZXJ8LiBUaGUgRklGTyB3aWxsIGJlIGxhcmdlIGVub3VnaCB0byBob2xkCi0gICAgLy8gfGZp
Zm9MZW5ndGh8IGZyYW1lcyBvZiBkYXRhIG9mIHxudW1iZXJPZkNoYW5uZWxzfCBjaGFubmVscy4g
VGhlIEF1ZGlvU291cmNlUHJvdmlkZXIgd2lsbCBiZQotICAgIC8vIGFza2VkIHRvIHByb2R1Y2Ug
fHByb3ZpZGVyU2l6ZXwgZnJhbWVzIHdoZW4gdGhlIEZJRk8gbmVlZHMgbW9yZSBkYXRhLgotICAg
IEF1ZGlvUHVsbEZJRk8oQXVkaW9Tb3VyY2VQcm92aWRlciYgYXVkaW9Qcm92aWRlciwgdW5zaWdu
ZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IGZpZm9MZW5ndGgsIHNpemVfdCBwcm92aWRlclNp
emUpOwotCi0gICAgLy8gUmVhZCB8ZnJhbWVzVG9Db25zdW1lfCBmcmFtZXMgZnJvbSB0aGUgRklG
TyBpbnRvIHRoZSBkZXN0aW5hdGlvbi4gSWYgdGhlIEZJRk8gZG9lcyBub3QgaGF2ZQotICAgIC8v
IGVub3VnaCBkYXRhLCB3ZSBhc2sgdGhlIHxwcm92aWRlcnwgdG8gZ2V0IG1vcmUgZGF0YSB0byBm
dWxmaWxsIHRoZSByZXF1ZXN0LgotICAgIHZvaWQgY29uc3VtZShBdWRpb0J1cyogZGVzdGluYXRp
b24sIHNpemVfdCBmcmFtZXNUb0NvbnN1bWUpOwotCi1wcml2YXRlOgotICAgIC8vIEZpbGwgdGhl
IEZJRk8gYnVmZmVyIHdpdGggYXQgbGVhc3QgfG51bWJlck9mRnJhbWVzfCBtb3JlIGRhdGEuCi0g
ICAgdm9pZCBmaWxsQnVmZmVyKHNpemVfdCBudW1iZXJPZkZyYW1lcyk7Ci0KLSAgICAvLyBUaGUg
cHJvdmlkZXIgb2YgdGhlIGRhdGEgaW4gb3VyIEZJRk8uCi0gICAgQXVkaW9Tb3VyY2VQcm92aWRl
ciYgbV9wcm92aWRlcjsKLQotICAgIC8vIFRoZSBhY3R1YWwgRklGTwotICAgIEF1ZGlvRklGTyBt
X2ZpZm87Ci0KLSAgICAvLyBOdW1iZXIgb2YgZnJhbWVzIG9mIGRhdGEgdGhhdCB0aGUgcHJvdmlk
ZXIgd2lsbCBwcm9kdWNlIHBlciBjYWxsLgotICAgIHVuc2lnbmVkIGludCBtX3Byb3ZpZGVyU2l6
ZTsKLQotICAgIC8vIFRlbXBvcmFyeSB3b3Jrc3BhY2UgdG8gaG9sZCB0aGUgZGF0YSBmcm9tIHRo
ZSBwcm92aWRlci4KLSAgICBSZWZQdHI8QXVkaW9CdXM+IG1fdGVtcEJ1czsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEF1ZGlvUHVsbEZJRk8uaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5j
cHAKaW5kZXggNWU2MjY4ZDNiYjEzYjVmMjcxZDJlNmE4OTYwMjgwZTc1M2I5ZGE0ZC4uODRlZmFi
MTYzMWIxYTY2Y2Y2NTE5YzFhMmI2M2U5NjljMjZkZWYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuY3BwCkBAIC05
MiwxMyArOTIsMTMgQEAgcHJpdmF0ZToKICAgICBzaXplX3QgbV9mcmFtZXNUb1Byb2Nlc3MgeyAw
IH07IC8vIFVzZWQgdG8gdmVyaWZ5IHRoYXQgYWxsIGNoYW5uZWxzIGFzayBmb3IgdGhlIHNhbWUg
YW1vdW50LgogfTsKIAotTXVsdGlDaGFubmVsUmVzYW1wbGVyOjpNdWx0aUNoYW5uZWxSZXNhbXBs
ZXIoZG91YmxlIHNjYWxlRmFjdG9yLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKQorTXVsdGlD
aGFubmVsUmVzYW1wbGVyOjpNdWx0aUNoYW5uZWxSZXNhbXBsZXIoZG91YmxlIHNjYWxlRmFjdG9y
LCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBPcHRpb25hbDx1bnNpZ25lZD4gcmVxdWVzdEZy
YW1lcykKICAgICA6IG1fbnVtYmVyT2ZDaGFubmVscyhudW1iZXJPZkNoYW5uZWxzKQogICAgICwg
bV9jaGFubmVsUHJvdmlkZXIobWFrZVVuaXF1ZTxDaGFubmVsUHJvdmlkZXI+KG1fbnVtYmVyT2ZD
aGFubmVscykpCiB7CiAgICAgLy8gQ3JlYXRlIGVhY2ggY2hhbm5lbCdzIHJlc2FtcGxlci4KICAg
ICBmb3IgKHVuc2lnbmVkIGNoYW5uZWxJbmRleCA9IDA7IGNoYW5uZWxJbmRleCA8IG51bWJlck9m
Q2hhbm5lbHM7ICsrY2hhbm5lbEluZGV4KQotICAgICAgICBtX2tlcm5lbHMuYXBwZW5kKG1ha2VV
bmlxdWU8U2luY1Jlc2FtcGxlcj4oc2NhbGVGYWN0b3IpKTsKKyAgICAgICAgbV9rZXJuZWxzLmFw
cGVuZChtYWtlVW5pcXVlPFNpbmNSZXNhbXBsZXI+KHNjYWxlRmFjdG9yLCByZXF1ZXN0RnJhbWVz
KSk7CiB9CiAKIE11bHRpQ2hhbm5lbFJlc2FtcGxlcjo6fk11bHRpQ2hhbm5lbFJlc2FtcGxlcigp
ID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011
bHRpQ2hhbm5lbFJlc2FtcGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVs
dGlDaGFubmVsUmVzYW1wbGVyLmgKaW5kZXggYWM4MWJlYzRiZTBiNDBkMjg0MTc2OWFlOGFjYTA3
MTg2OGJhYjBjZi4uNzE2YmM2MDFlODc4ZTNmNzRmNzRlYTM0ZGNiZDFjNzk4YzRkZGNhOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1w
bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVz
YW1wbGVyLmgKQEAgLTQwLDcgKzQwLDggQEAgY2xhc3MgQXVkaW9CdXM7CiBjbGFzcyBNdWx0aUNo
YW5uZWxSZXNhbXBsZXIgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOiAgIAotICAgIGV4cGxpY2l0IE11bHRpQ2hhbm5lbFJlc2FtcGxlcihkb3VibGUgc2NhbGVG
YWN0b3IsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMpOworICAgIC8vIHJlcXVlc3RGcmFtZXMg
Y29uc3Ryb2xzIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgaW4gZnJhbWVzIHdoZW4gQXVkaW9Tb3Vy
Y2VQcm92aWRlcjo6cHJvdmlkZUlucHV0KCkgaXMgY2FsbGVkLgorICAgIGV4cGxpY2l0IE11bHRp
Q2hhbm5lbFJlc2FtcGxlcihkb3VibGUgc2NhbGVGYWN0b3IsIHVuc2lnbmVkIG51bWJlck9mQ2hh
bm5lbHMsIE9wdGlvbmFsPHVuc2lnbmVkPiByZXF1ZXN0RnJhbWVzID0gV1RGOjpudWxsb3B0KTsK
ICAgICB+TXVsdGlDaGFubmVsUmVzYW1wbGVyKCk7CiAKICAgICAvLyBQcm9jZXNzIGdpdmVuIEF1
ZGlvU291cmNlUHJvdmlkZXIgZm9yIHN0cmVhbWluZyBhcHBsaWNhdGlvbnMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QdXNoUHVsbEZJRk8uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUHVzaFB1bGxGSUZPLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZTZl
NDA2MDJmNjlkZGM3ZjJmYWFlOTUyM2RiNjcwYjJlMjg2Y2E4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUHVzaFB1bGxGSUZPLmNwcApAQCAtMCwwICsx
LDEyNyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE3IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlB1c2hQdWxsRklGTy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IHNpemVfdCBQ
dXNoUHVsbEZJRk86OmtNYXhGSUZPTGVuZ3RoID0gNjU1MzY7CisKK1B1c2hQdWxsRklGTzo6UHVz
aFB1bGxGSUZPKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBmaWZvTGVuZ3RoKQor
ICAgIDogbV9maWZvTGVuZ3RoKGZpZm9MZW5ndGgpCit7CisgICAgQVNTRVJUKG1fZmlmb0xlbmd0
aCA8PSBrTWF4RklGT0xlbmd0aCk7CisgICAgbV9maWZvQnVzID0gQXVkaW9CdXM6OmNyZWF0ZShu
dW1iZXJPZkNoYW5uZWxzLCBtX2ZpZm9MZW5ndGgpOworfQorCitQdXNoUHVsbEZJRk86On5QdXNo
UHVsbEZJRk8oKSA9IGRlZmF1bHQ7CisKKy8vIFB1c2ggdGhlIGRhdGEgZnJvbSB8aW5wdXRCdXN8
IHRvIEZJRk8uIFRoZSBzaXplIG9mIHB1c2ggaXMgZGV0ZXJtaW5lZCBieQorLy8gdGhlIGxlbmd0
aCBvZiB8aW5wdXRCdXN8Lgordm9pZCBQdXNoUHVsbEZJRk86OnB1c2goY29uc3QgQXVkaW9CdXMq
IGlucHV0QnVzKQoreworICAgIEFTU0VSVChpbnB1dEJ1cyk7CisgICAgQVNTRVJUKGlucHV0QnVz
LT5sZW5ndGgoKSA8PSBtX2ZpZm9MZW5ndGgpOworICAgIEFTU0VSVChtX2luZGV4V3JpdGUgPCBt
X2ZpZm9MZW5ndGgpOworCisgICAgY29uc3Qgc2l6ZV90IGlucHV0QnVzTGVuZ3RoID0gaW5wdXRC
dXMtPmxlbmd0aCgpOworICAgIGNvbnN0IHNpemVfdCByZW1haW5kZXIgPSBtX2ZpZm9MZW5ndGgg
LSBtX2luZGV4V3JpdGU7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9maWZvQnVz
LT5udW1iZXJPZkNoYW5uZWxzKCk7ICsraSkgeworICAgICAgICBmbG9hdCogZmlmb0J1c0NoYW5u
ZWwgPSBtX2ZpZm9CdXMtPmNoYW5uZWwoaSktPm11dGFibGVEYXRhKCk7CisgICAgICAgIGNvbnN0
IGZsb2F0KiBpbnB1dEJ1c0NoYW5uZWwgPSBpbnB1dEJ1cy0+Y2hhbm5lbChpKS0+ZGF0YSgpOwor
ICAgICAgICBpZiAocmVtYWluZGVyID49IGlucHV0QnVzTGVuZ3RoKSB7CisgICAgICAgICAgICAv
LyBUaGUgcmVtYWluZGVyIGlzIGJpZyBlbm91Z2ggZm9yIHRoZSBpbnB1dCBkYXRhLgorICAgICAg
ICAgICAgbWVtY3B5KGZpZm9CdXNDaGFubmVsICsgbV9pbmRleFdyaXRlLCBpbnB1dEJ1c0NoYW5u
ZWwsIGlucHV0QnVzTGVuZ3RoICogc2l6ZW9mKCpmaWZvQnVzQ2hhbm5lbCkpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgLy8gVGhlIGlucHV0IGRhdGEgb3ZlcmZsb3dzIHRoZSByZW1h
aW5kZXIgc2l6ZS4gV3JhcCBhcm91bmQgdGhlIGluZGV4LgorICAgICAgICAgICAgbWVtY3B5KGZp
Zm9CdXNDaGFubmVsICsgbV9pbmRleFdyaXRlLCBpbnB1dEJ1c0NoYW5uZWwsIHJlbWFpbmRlciAq
IHNpemVvZigqZmlmb0J1c0NoYW5uZWwpKTsKKyAgICAgICAgICAgIG1lbWNweShmaWZvQnVzQ2hh
bm5lbCwgaW5wdXRCdXNDaGFubmVsICsgcmVtYWluZGVyLCAoaW5wdXRCdXNMZW5ndGggLSByZW1h
aW5kZXIpICogc2l6ZW9mKCpmaWZvQnVzQ2hhbm5lbCkpOworICAgICAgICB9CisgICAgfQorCisg
ICAgLy8gVXBkYXRlIHRoZSB3cml0ZSBpbmRleDsgd3JhcCBpdCBhcm91bmQgaWYgbmVjZXNzYXJ5
LgorICAgIG1faW5kZXhXcml0ZSA9IChtX2luZGV4V3JpdGUgKyBpbnB1dEJ1c0xlbmd0aCkgJSBt
X2ZpZm9MZW5ndGg7CisKKyAgICAvLyBJbiBjYXNlIG9mIG92ZXJmbG93LCBtb3ZlIHRoZSB8aW5k
ZXhSZWFkfCB0byB0aGUgdXBkYXRlZCB8aW5kZXhXcml0ZXwgdG8KKyAgICAvLyBhdm9pZCByZWFk
aW5nIG92ZXJ3cml0dGVuIGZyYW1lcyBieSB0aGUgbmV4dCBwdWxsLgorICAgIGlmIChpbnB1dEJ1
c0xlbmd0aCA+IG1fZmlmb0xlbmd0aCAtIG1fZnJhbWVzQXZhaWxhYmxlKQorICAgICAgICBtX2lu
ZGV4UmVhZCA9IG1faW5kZXhXcml0ZTsKKworICAgIC8vIFVwZGF0ZSB0aGUgbnVtYmVyIG9mIGZy
YW1lcyBhdmFpbGFibGUgaW4gRklGTy4KKyAgICBtX2ZyYW1lc0F2YWlsYWJsZSA9IHN0ZDo6bWlu
KG1fZnJhbWVzQXZhaWxhYmxlICsgaW5wdXRCdXNMZW5ndGgsIG1fZmlmb0xlbmd0aCk7CisgICAg
QVNTRVJUKCgobV9pbmRleFJlYWQgKyBtX2ZyYW1lc0F2YWlsYWJsZSkgJSBtX2ZpZm9MZW5ndGgp
ID09IG1faW5kZXhXcml0ZSk7Cit9CisKKy8vIFB1bGwgdGhlIGRhdGEgb3V0IG9mIEZJRk8gdG8g
fG91dHB1dEJ1c3wuIElmIHJlbWFpbmluZyBmcmFtZSBpbiB0aGUgRklGTworLy8gaXMgbGVzcyB0
aGFuIHRoZSBmcmFtZXMgdG8gcHVsbCwgcHJvdmlkZXMgcmVtYWluaW5nIGZyYW1lIHBsdXMgdGhl
IHNpbGVuY2UuCitzaXplX3QgUHVzaFB1bGxGSUZPOjpwdWxsKEF1ZGlvQnVzKiBvdXRwdXRCdXMs
IHNpemVfdCBmcmFtZXNSZXF1ZXN0ZWQpCit7CisgICAgQVNTRVJUKG91dHB1dEJ1cyk7CisgICAg
QVNTRVJUKGZyYW1lc1JlcXVlc3RlZCA8PSBvdXRwdXRCdXMtPmxlbmd0aCgpKTsKKyAgICBBU1NF
UlQoZnJhbWVzUmVxdWVzdGVkIDw9IG1fZmlmb0xlbmd0aCk7CisgICAgQVNTRVJUKG1faW5kZXhS
ZWFkIDwgbV9maWZvTGVuZ3RoKTsKKworICAgIGNvbnN0IHNpemVfdCByZW1haW5kZXIgPSBtX2Zp
Zm9MZW5ndGggLSBtX2luZGV4UmVhZDsKKyAgICBjb25zdCBzaXplX3QgZnJhbWVzVG9GaWxsID0g
c3RkOjptaW4obV9mcmFtZXNBdmFpbGFibGUsIGZyYW1lc1JlcXVlc3RlZCk7CisKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9maWZvQnVzLT5udW1iZXJPZkNoYW5uZWxzKCk7ICsraSkg
eworICAgICAgICBjb25zdCBmbG9hdCogZmlmb0J1c0NoYW5uZWwgPSBtX2ZpZm9CdXMtPmNoYW5u
ZWwoaSktPmRhdGEoKTsKKyAgICAgICAgZmxvYXQqIG91dHB1dEJ1c0NoYW5uZWwgPSBvdXRwdXRC
dXMtPmNoYW5uZWwoaSktPm11dGFibGVEYXRhKCk7CisKKyAgICAgICAgLy8gRmlsbCB1cCB0aGUg
b3V0cHV0IGJ1cyB3aXRoIHRoZSBhdmFpbGFibGUgZnJhbWVzIGZpcnN0LgorICAgICAgICBpZiAo
cmVtYWluZGVyID49IGZyYW1lc1RvRmlsbCkgeworICAgICAgICAgICAgLy8gVGhlIHJlbWFpbmRl
ciBpcyBiaWcgZW5vdWdoIGZvciB0aGUgZnJhbWVzIHRvIHB1bGwuCisgICAgICAgICAgICBtZW1j
cHkob3V0cHV0QnVzQ2hhbm5lbCwgZmlmb0J1c0NoYW5uZWwgKyBtX2luZGV4UmVhZCwgZnJhbWVz
VG9GaWxsICogc2l6ZW9mKCpmaWZvQnVzQ2hhbm5lbCkpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgLy8gVGhlIGZyYW1lcyB0byBwdWxsIGlzIGJpZ2dlciB0aGFuIHRoZSByZW1haW5k
ZXIgc2l6ZS4KKyAgICAgICAgICAgIC8vIFdyYXAgYXJvdW5kIHRoZSBpbmRleC4KKyAgICAgICAg
ICAgIG1lbWNweShvdXRwdXRCdXNDaGFubmVsLCBmaWZvQnVzQ2hhbm5lbCArIG1faW5kZXhSZWFk
LCByZW1haW5kZXIgKiBzaXplb2YoKmZpZm9CdXNDaGFubmVsKSk7CisgICAgICAgICAgICBtZW1j
cHkob3V0cHV0QnVzQ2hhbm5lbCArIHJlbWFpbmRlciwgZmlmb0J1c0NoYW5uZWwsIChmcmFtZXNU
b0ZpbGwgLSByZW1haW5kZXIpICogc2l6ZW9mKCpmaWZvQnVzQ2hhbm5lbCkpOworICAgICAgICB9
CisKKyAgICAgICAgLy8gVGhlIGZyYW1lcyBhdmFpbGFibGUgd2FzIG5vdCBlbm91Z2ggdG8gZnVs
ZmlsbCB0aGUgcmVxdWVzdGVkIGZyYW1lcy4gRmlsbAorICAgICAgICAvLyB0aGUgcmVzdCBvZiB0
aGUgY2hhbm5lbCB3aXRoIHNpbGVuY2UuCisgICAgICAgIGlmIChmcmFtZXNSZXF1ZXN0ZWQgPiBm
cmFtZXNUb0ZpbGwpCisgICAgICAgICAgICBtZW1zZXQob3V0cHV0QnVzQ2hhbm5lbCArIGZyYW1l
c1RvRmlsbCwgMCwgKGZyYW1lc1JlcXVlc3RlZCAtIGZyYW1lc1RvRmlsbCkgKiBzaXplb2YoKm91
dHB1dEJ1c0NoYW5uZWwpKTsKKyAgICB9CisKKyAgICAvLyBVcGRhdGUgdGhlIHJlYWQgaW5kZXg7
IHdyYXAgaXQgYXJvdW5kIGlmIG5lY2Vzc2FyeS4KKyAgICBtX2luZGV4UmVhZCA9IChtX2luZGV4
UmVhZCArIGZyYW1lc1RvRmlsbCkgJSBtX2ZpZm9MZW5ndGg7CisKKyAgICAvLyBJbiBjYXNlIG9m
IHVuZGVyZmxvdywgbW92ZSB0aGUgfGluZGV4V3JpdGV8IHRvIHRoZSB1cGRhdGVkIHxpbmRleFJl
YWR8LgorICAgIGlmIChmcmFtZXNSZXF1ZXN0ZWQgPiBmcmFtZXNUb0ZpbGwpCisgICAgICAgIG1f
aW5kZXhXcml0ZSA9IG1faW5kZXhSZWFkOworCisgICAgLy8gVXBkYXRlIHRoZSBudW1iZXIgb2Yg
ZnJhbWVzIGluIEZJRk8uCisgICAgbV9mcmFtZXNBdmFpbGFibGUgLT0gZnJhbWVzVG9GaWxsOwor
ICAgIEFTU0VSVCgoKG1faW5kZXhSZWFkICsgbV9mcmFtZXNBdmFpbGFibGUpICUgbV9maWZvTGVu
Z3RoKSA9PSBtX2luZGV4V3JpdGUpOworCisgICAgLy8gfGZyYW1lc1JlcXVlc3RlZCA+IG1fZnJh
bWVzQXZhaWxhYmxlfCBtZWFucyB0aGUgZnJhbWVzIGluIEZJRk8gaXMgbm90CisgICAgLy8gZW5v
dWdoIHRvIGZ1bGZpbGwgdGhlIHJlcXVlc3RlZCBmcmFtZXMgZnJvbSB0aGUgYXVkaW8gZGV2aWNl
LgorICAgIHJldHVybiBmcmFtZXNSZXF1ZXN0ZWQgPiBtX2ZyYW1lc0F2YWlsYWJsZSA/IGZyYW1l
c1JlcXVlc3RlZCAtIG1fZnJhbWVzQXZhaWxhYmxlIDogMDsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUHVzaFB1
bGxGSUZPLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QdXNoUHVsbEZJRk8uaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mYzBlN2VjZDFiMzgzN2YyZDk3MGNlY2VhZWFiNmYwMzA3MzRmOGIwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUHVzaFB1bGxGSUZP
LmgKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE3IFRoZSBDaHJvbWl1bSBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCisKKy8vIFB1c2hQdWxs
RklGTyBjbGFzcyBpcyBhbiBpbnRlcm1lZGlhdGUgYXVkaW8gc2FtcGxlIHN0b3JhZ2UgYmV0d2Vl
bgorLy8gV2ViS2l0LVdlYkF1ZGlvIGFuZCB0aGUgcmVuZGVyZXIuIFRoZSByZW5kZXJlcidzIGhh
cmR3YXJlIGNhbGxiYWNrIGJ1ZmZlciBzaXplCisvLyB2YXJpZXMgb24gdGhlIHBsYXRmb3JtLCBi
dXQgdGhlIFdlYkF1ZGlvIGFsd2F5cyByZW5kZXJzIDEyOCBmcmFtZXMgKHJlbmRlcgorLy8gcXVh
bnR1bSwgUlEpIHRodXMgRklGTyBpcyBuZWVkZWQgdG8gaGFuZGxlIHRoZSBnZW5lcmFsIGNhc2Uu
CitjbGFzcyBQdXNoUHVsbEZJRk8geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFB1c2hQdWxsRklGTyk7CisKK3B1YmxpYzoKKyAgICAvLyBN
YXhpbXVtIEZJRk8gbGVuZ3RoLiAoNTEyIHJlbmRlciBxdWFudGEpCisgICAgc3RhdGljIGNvbnN0
IHNpemVfdCBrTWF4RklGT0xlbmd0aDsKKworICAgIC8vIHxmaWZvTGVuZ3RofCBjYW5ub3QgZXhj
ZWVkIHxrTWF4RklGT0xlbmd0aHwuIE90aGVyd2lzZSBpdCBjcmFzaGVzLgorICAgIFB1c2hQdWxs
RklGTyh1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgZmlmb0xlbmd0aCk7CisgICAg
flB1c2hQdWxsRklGTygpOworCisgICAgLy8gUHVzaGVzIHRoZSByZW5kZXJlZCBmcmFtZXMgYnkg
V2ViQXVkaW8gZW5naW5lLgorICAgIC8vICAtIFRoZSB8aW5wdXRCdXN8IGxlbmd0aCBpcyAxMjgg
ZnJhbWVzICgxIHJlbmRlciBxdWFudHVtKSwgZml4ZWQuCisgICAgLy8gIC0gSW4gY2FzZSBvZiBv
dmVyZmxvdyAoRklGTyBmdWxsIHdoaWxlIHB1c2gpLCB0aGUgZXhpc3RpbmcgZnJhbWVzIGluIEZJ
Rk8KKyAgICAvLyAgICB3aWxsIGJlIG92ZXJ3cml0dGVuIGFuZCB8aW5kZXhSZWFkfCB3aWxsIGJl
IGZvcmNpYmx5IG1vdmVkIHRvCisgICAgLy8gICAgfGluZGV4V3JpdGV8IHRvIGF2b2lkIHJlYWRp
bmcgb3ZlcndyaXR0ZW4gZnJhbWVzLgorICAgIHZvaWQgcHVzaChjb25zdCBBdWRpb0J1cyogaW5w
dXRCdXMpOworCisgICAgLy8gUHVsbHMgfGZyYW1lc1JlcXVlc3RlZHwgYnkgdGhlIGF1ZGlvIGRl
dmljZSB0aHJlYWQgYW5kIHJldHVybnMgdGhlIGFjdHVhbAorICAgIC8vIG51bWJlciBvZiBmcmFt
ZXMgdG8gYmUgcmVuZGVyZWQgYnkgdGhlIHNvdXJjZS4gKGkuZS4gV2ViQXVkaW8gZ3JhcGgpCisg
ICAgc2l6ZV90IHB1bGwoQXVkaW9CdXMqIG91dHB1dEJ1cywgc2l6ZV90IGZyYW1lc1JlcXVlc3Rl
ZCk7CisKKyAgICBzaXplX3QgZnJhbWVzQXZhaWxhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9mcmFt
ZXNBdmFpbGFibGU7IH0KKyAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9maWZv
TGVuZ3RoOyB9CisgICAgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscygpIGNvbnN0IHsgcmV0dXJu
IG1fZmlmb0J1cy0+bnVtYmVyT2ZDaGFubmVscygpOyB9CisgICAgQXVkaW9CdXMqIGJ1cygpIGNv
bnN0IHsgcmV0dXJuIG1fZmlmb0J1cy5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIC8vIFRoZSBz
aXplIG9mIHRoZSBGSUZPLgorICAgIGNvbnN0IHNpemVfdCBtX2ZpZm9MZW5ndGggPSAwOworCisg
ICAgUmVmUHRyPEF1ZGlvQnVzPiBtX2ZpZm9CdXM7CisKKyAgICAvLyBUaGUgbnVtYmVyIG9mIGZy
YW1lcyBpbiB0aGUgRklGTyBhY3R1YWxseSBhdmFpbGFibGUgZm9yIHB1bGxpbmcuCisgICAgc2l6
ZV90IG1fZnJhbWVzQXZhaWxhYmxlIHsgMCB9OworCisgICAgc2l6ZV90IG1faW5kZXhSZWFkIHsg
MCB9OworICAgIHNpemVfdCBtX2luZGV4V3JpdGUgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
U2luY1Jlc2FtcGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVz
YW1wbGVyLmNwcAppbmRleCA1MjA1MjdiNTRiYTU3ODZkOGNlYmRmYWI1M2E0NTY4YTkzZGU2ZWQ4
Li4yNjUxYzQ4NzA5NTc0ZDk4MjNjZmRmZTY5ZTg1ZDcwNjgyZWQwMzkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmNwcApAQCAtMzksNTEgKzM5
LDExMyBAQAogI2luY2x1ZGUgPGVtbWludHJpbi5oPgogI2VuZGlmCiAKLS8vIElucHV0IGJ1ZmZl
ciBsYXlvdXQsIGRpdmlkaW5nIHRoZSB0b3RhbCBidWZmZXIgaW50byByZWdpb25zIChyMCAtIHI1
KToKKy8vIEluaXRpYWwgaW5wdXQgYnVmZmVyIGxheW91dCwgZGl2aWRpbmcgaW50byByZWdpb25z
IHIwIHRvIHI0IChub3RlOiByMCwgcjMKKy8vIGFuZCByNCB3aWxsIG1vdmUgYWZ0ZXIgdGhlIGZp
cnN0IGxvYWQpOgogLy8KIC8vIHwtLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0t
LS0tLXwKIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBibG9ja1NpemUgKyBrZXJuZWxTaXplIC8gMiAgICAgICAgICAgICAgICAgICAgICAgICAgIAor
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9yZXF1ZXN0
RnJhbWVzCiAvLyAgICAgICAgICAgICAgICAgICA8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+Ci0v
LyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcjAKKy8v
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIwIChkdXJpbmcgZmly
c3QgbG9hZCkKIC8vCiAvLyAgIGtlcm5lbFNpemUgLyAyICAga2VybmVsU2l6ZSAvIDIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBrZXJuZWxTaXplIC8gMiAgICAga2VybmVsU2l6ZSAv
IDIgCiAvLyA8LS0tLS0tLS0tLS0tLS0tPiA8LS0tLS0tLS0tLS0tLS0tPiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDwtLS0tLS0tLS0tLS0tLS0+IDwtLS0tLS0tLS0tLS0tLS0+CiAvLyAg
ICAgICAgIHIxICAgICAgICAgICAgICAgIHIyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcjMgICAgICAgICAgICAgICAgcjQKIC8vIAotLy8gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tTaXplICAgICAgICAgICAgICAg
ICAgICAgICAgICAgCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8LS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0+Ci0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cjUKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2Jsb2NrU2l6ZSA9PSByNCAtIHIy
CisvLyAgICAgICAgICAgICAgICAgICA8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tPgorLy8KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX3JlcXVlc3RGcmFtZXMKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPC0tLS0tLS0tLS0tLS0tLS0tLSAuLi4gLS0tLS0tLS0tLS0tLS0tLS0+CisvLyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcjAgKGR1cmluZyBzZWNv
bmQgbG9hZCkKKy8vCisvLyBPbiB0aGUgc2Vjb25kIHJlcXVlc3QgcjAgc2xpZGVzIHRvIHRoZSBy
aWdodCBieSBrZXJuZWxTaXplIC8gMiBhbmQgcjMsIHI0CisvLyBhbmQgbV9ibG9ja1NpemUgYXJl
IHJlaW5pdGlhbGl6ZWQgdmlhIHN0ZXAgKDMpIGluIHRoZSBhbGdvcml0aG0gYmVsb3cuCisvLwor
Ly8gVGhlc2UgbmV3IHJlZ2lvbnMgcmVtYWluIGNvbnN0YW50IHVudGlsIGEgRmx1c2goKSBvY2N1
cnMuIFdoaWxlIGNvbXBsaWNhdGVkLAorLy8gdGhpcyBhbGxvd3MgdXMgdG8gcmVkdWNlIGppdHRl
ciBieSBhbHdheXMgcmVxdWVzdGluZyB0aGUgc2FtZSBhbW91bnQgZnJvbSB0aGUKKy8vIHByb3Zp
ZGVkIGNhbGxiYWNrLgogCiAvLyBUaGUgQWxnb3JpdGhtOgogLy8KLS8vIDEpIENvbnN1bWUgaW5w
dXQgZnJhbWVzIGludG8gcjAgKHIxIGlzIHplcm8taW5pdGlhbGl6ZWQpLgotLy8gMikgUG9zaXRp
b24ga2VybmVsIGNlbnRlcmVkIGF0IHN0YXJ0IG9mIHIwIChyMikgYW5kIGdlbmVyYXRlIG91dHB1
dCBmcmFtZXMgdW50aWwga2VybmVsIGlzIGNlbnRlcmVkIGF0IHN0YXJ0IG9mIHI0LgotLy8gICAg
b3Igd2UndmUgZmluaXNoZWQgZ2VuZXJhdGluZyBhbGwgdGhlIG91dHB1dCBmcmFtZXMuCi0vLyAz
KSBDb3B5IHIzIHRvIHIxIGFuZCByNCB0byByMi4KLS8vIDQpIENvbnN1bWUgaW5wdXQgZnJhbWVz
IGludG8gcjUgKHplcm8tcGFkIGlmIHdlIHJ1biBvdXQgb2YgaW5wdXQpLgotLy8gNSkgR290byAo
MikgdW50aWwgYWxsIG9mIGlucHV0IGlzIGNvbnN1bWVkLgorLy8gMSkgQWxsb2NhdGUgaW5wdXRf
YnVmZmVyIG9mIHNpemU6IG1fcmVxdWVzdEZyYW1lcyArIGtlcm5lbFNpemU7IHRoaXMgZW5zdXJl
cworLy8gICAgdGhlcmUncyBlbm91Z2ggcm9vbSB0byByZWFkIG1fcmVxdWVzdEZyYW1lcyBmcm9t
IHRoZSBjYWxsYmFjayBpbnRvIHJlZ2lvbgorLy8gICAgcjAgKHdoaWNoIHdpbGwgbW92ZSBiZXR3
ZWVuIHRoZSBmaXJzdCBhbmQgc3Vic2VxdWVudCBwYXNzZXMpLgorLy8KKy8vIDIpIExldCByMSwg
cjIgZWFjaCByZXByZXNlbnQgaGFsZiB0aGUga2VybmVsIGNlbnRlcmVkIGFyb3VuZCByMDoKKy8v
CisvLyAgICAgICAgcjAgPSBtX2lucHV0QnVmZmVyICsga2VybmVsU2l6ZSAvIDIKKy8vICAgICAg
ICByMSA9IG1faW5wdXRCdWZmZXIKKy8vICAgICAgICByMiA9IHIwCisvLworLy8gICAgcjAgaXMg
YWx3YXlzIG1fcmVxdWVzdEZyYW1lcyBpbiBzaXplLiByMSwgcjIgYXJlIGtlcm5lbFNpemUgLyAy
IGluCisvLyAgICBzaXplLiByMSBtdXN0IGJlIHplcm8gaW5pdGlhbGl6ZWQgdG8gYXZvaWQgY29u
dm9sdXRpb24gd2l0aCBnYXJiYWdlIChzZWUKKy8vICAgIHN0ZXAgKDUpIGZvciB3aHkpLgorLy8K
Ky8vIDMpIExldCByMywgcjQgZWFjaCByZXByZXNlbnQgaGFsZiB0aGUga2VybmVsIHJpZ2h0IGFs
aWduZWQgd2l0aCB0aGUgZW5kIG9mCisvLyAgICByMCBhbmQgY2hvb3NlIG1fYmxvY2tTaXplIGFz
IHRoZSBkaXN0YW5jZSBpbiBmcmFtZXMgYmV0d2VlbiByNCBhbmQgcjI6CisvLworLy8gICAgICAg
IHIzID0gcjAgKyBtX3JlcXVlc3RGcmFtZXMgLSBrZXJuZWxTaXplCisvLyAgICAgICAgcjQgPSBy
MCArIG1fcmVxdWVzdEZyYW1lcyAtIGtlcm5lbFNpemUgLyAyCisvLyAgICAgICAgbV9ibG9ja1Np
emUgPSByNCAtIHIyID0gbV9yZXF1ZXN0RnJhbWVzIC0ga2VybmVsU2l6ZSAvIDIKKy8vCisvLyA0
KSBDb25zdW1lIG1fcmVxdWVzdEZyYW1lcyBmcmFtZXMgaW50byByMC4KKy8vCisvLyA1KSBQb3Np
dGlvbiBrZXJuZWwgY2VudGVyZWQgYXQgc3RhcnQgb2YgcjIgYW5kIGdlbmVyYXRlIG91dHB1dCBm
cmFtZXMgdW50aWwKKy8vICAgIHRoZSBrZXJuZWwgaXMgY2VudGVyZWQgYXQgdGhlIHN0YXJ0IG9m
IHI0IG9yIHdlJ3ZlIGZpbmlzaGVkIGdlbmVyYXRpbmcKKy8vICAgIGFsbCB0aGUgb3V0cHV0IGZy
YW1lcy4KKy8vCisvLyA2KSBXcmFwIGxlZnQgb3ZlciBkYXRhIGZyb20gdGhlIHIzIHRvIHIxIGFu
ZCByNCB0byByMi4KKy8vCisvLyA3KSBJZiB3ZSdyZSBvbiB0aGUgc2Vjb25kIGxvYWQsIGluIG9y
ZGVyIHRvIGF2b2lkIG92ZXJ3cml0aW5nIHRoZSBmcmFtZXMgd2UKKy8vICAgIGp1c3Qgd3JhcHBl
ZCBmcm9tIHI0IHdlIG5lZWQgdG8gc2xpZGUgcjAgdG8gdGhlIHJpZ2h0IGJ5IHRoZSBzaXplIG9m
CisvLyAgICByNCwgd2hpY2ggaXMga2VybmVsU2l6ZSAvIDI6CisvLworLy8gICAgICAgIHIwID0g
cjAgKyBrZXJuZWxTaXplIC8gMiA9IG1faW5wdXRCdWZmZXIgKyBrZXJuZWxTaXplCisvLworLy8g
ICAgcjMsIHI0LCBhbmQgbV9ibG9ja1NpemUgdGhlbiBuZWVkIHRvIGJlIHJlaW5pdGlhbGl6ZWQs
IHNvIGdvdG8gKDMpLgorLy8KKy8vIDgpIEVsc2UsIGlmIHdlJ3JlIG5vdCBvbiB0aGUgc2Vjb25k
IGxvYWQsIGdvdG8gKDQpLgogLy8KIC8vIG5vdGU6IHdlJ3JlIGdsb3NzaW5nIG92ZXIgaG93IHRo
ZSBzdWItc2FtcGxlIGhhbmRsaW5nIHdvcmtzIHdpdGggbV92aXJ0dWFsU291cmNlSW5kZXgsIGV0
Yy4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaW5jUmVzYW1wbGVyOjpTaW5jUmVzYW1wbGVy
KGRvdWJsZSBzY2FsZUZhY3RvciwgdW5zaWduZWQga2VybmVsU2l6ZSwgdW5zaWduZWQgbnVtYmVy
T2ZLZXJuZWxPZmZzZXRzKQorY29uc3RleHByIHVuc2lnbmVkIGRlZmF1bHRSZXF1ZXN0RnJhbWVz
IHsgNTEyIH07Citjb25zdGV4cHIgdW5zaWduZWQga2VybmVsU2l6ZSB7IDMyIH07Citjb25zdGV4
cHIgdW5zaWduZWQgbnVtYmVyT2ZLZXJuZWxPZmZzZXRzIHsgMzIgfTsKKworU2luY1Jlc2FtcGxl
cjo6U2luY1Jlc2FtcGxlcihkb3VibGUgc2NhbGVGYWN0b3IsIE9wdGlvbmFsPHVuc2lnbmVkPiBy
ZXF1ZXN0RnJhbWVzKQogICAgIDogbV9zY2FsZUZhY3RvcihzY2FsZUZhY3RvcikKLSAgICAsIG1f
a2VybmVsU2l6ZShrZXJuZWxTaXplKQotICAgICwgbV9udW1iZXJPZktlcm5lbE9mZnNldHMobnVt
YmVyT2ZLZXJuZWxPZmZzZXRzKQotICAgICwgbV9rZXJuZWxTdG9yYWdlKG1fa2VybmVsU2l6ZSAq
IChtX251bWJlck9mS2VybmVsT2Zmc2V0cyArIDEpKQotICAgICwgbV92aXJ0dWFsU291cmNlSW5k
ZXgoMCkKLSAgICAsIG1fYmxvY2tTaXplKDUxMikKLSAgICAsIG1faW5wdXRCdWZmZXIobV9ibG9j
a1NpemUgKyBtX2tlcm5lbFNpemUpIC8vIFNlZSBpbnB1dCBidWZmZXIgbGF5b3V0IGFib3ZlLgot
ICAgICwgbV9zb3VyY2UoMCkKLSAgICAsIG1fc291cmNlRnJhbWVzQXZhaWxhYmxlKDApCi0gICAg
LCBtX3NvdXJjZVByb3ZpZGVyKDApCi0gICAgLCBtX2lzQnVmZmVyUHJpbWVkKGZhbHNlKQorICAg
ICwgbV9rZXJuZWxTdG9yYWdlKGtlcm5lbFNpemUgKiAobnVtYmVyT2ZLZXJuZWxPZmZzZXRzICsg
MSkpCisgICAgLCBtX3JlcXVlc3RGcmFtZXMocmVxdWVzdEZyYW1lcy52YWx1ZU9yKGRlZmF1bHRS
ZXF1ZXN0RnJhbWVzKSkKKyAgICAsIG1faW5wdXRCdWZmZXIobV9yZXF1ZXN0RnJhbWVzICsga2Vy
bmVsU2l6ZSkgLy8gU2VlIGlucHV0IGJ1ZmZlciBsYXlvdXQgYWJvdmUuCisgICAgLCBtX3IxKG1f
aW5wdXRCdWZmZXIuZGF0YSgpKQorICAgICwgbV9yMihtX2lucHV0QnVmZmVyLmRhdGEoKSArIGtl
cm5lbFNpemUgLyAyKQogeworICAgIEFTU0VSVChtX3JlcXVlc3RGcmFtZXMgPiAwKTsKKyAgICB1
cGRhdGVSZWdpb25zKGZhbHNlKTsKKyAgICBBU1NFUlQobV9ibG9ja1NpemUgPiBrZXJuZWxTaXpl
KTsKICAgICBpbml0aWFsaXplS2VybmVsKCk7CiB9CiAKK3ZvaWQgU2luY1Jlc2FtcGxlcjo6dXBk
YXRlUmVnaW9ucyhib29sIGlzU2Vjb25kTG9hZCkKK3sKKyAgICAvLyBTZXR1cCB2YXJpb3VzIHJl
Z2lvbiBwb2ludGVycyBpbiB0aGUgYnVmZmVyIChzZWUgZGlhZ3JhbSBhYm92ZSkuIElmIHdlJ3Jl
CisgICAgLy8gb24gdGhlIHNlY29uZCBsb2FkIHdlIG5lZWQgdG8gc2xpZGUgbV9yMCB0byB0aGUg
cmlnaHQgYnkga2VybmVsU2l6ZSAvIDIuCisgICAgbV9yMCA9IG1faW5wdXRCdWZmZXIuZGF0YSgp
ICsgKGlzU2Vjb25kTG9hZCA/IGtlcm5lbFNpemUgOiBrZXJuZWxTaXplIC8gMik7CisgICAgbV9y
MyA9IG1fcjAgKyBtX3JlcXVlc3RGcmFtZXMgLSBrZXJuZWxTaXplOworICAgIG1fcjQgPSBtX3Iw
ICsgbV9yZXF1ZXN0RnJhbWVzIC0ga2VybmVsU2l6ZSAvIDI7CisgICAgbV9ibG9ja1NpemUgPSBt
X3I0IC0gbV9yMjsKKworICAgIC8vIG1fcjEgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgYnVmZmVy
LgorICAgIEFTU0VSVChtX3IxID09IG1faW5wdXRCdWZmZXIuZGF0YSgpKTsKKyAgICAvLyBtX3Ix
IGxlZnQgb2YgbV9yMiwgbV9yNCBsZWZ0IG9mIG1fcjMgYW5kIHNpemUgY29ycmVjdC4KKyAgICBB
U1NFUlQoKG1fcjIgLSBtX3IxKSA9PSAobV9yNCAtIG1fcjMpKTsKKyAgICAvLyBtX3IyIGxlZnQg
b2YgcjMuCisgICAgQVNTRVJUKG1fcjIgPD0gbV9yMyk7Cit9CisKIHZvaWQgU2luY1Jlc2FtcGxl
cjo6aW5pdGlhbGl6ZUtlcm5lbCgpCiB7CiAgICAgLy8gQmxhY2ttYW4gd2luZG93IHBhcmFtZXRl
cnMuCkBAIC05OCwxNiArMTYwLDE2IEBAIHZvaWQgU2luY1Jlc2FtcGxlcjo6aW5pdGlhbGl6ZUtl
cm5lbCgpCiAgICAgLy8gVGhlIHNpbmMgZnVuY3Rpb24gaXMgYW4gaWRlYWxpemVkIGJyaWNrLXdh
bGwgZmlsdGVyLCBidXQgc2luY2Ugd2UncmUgd2luZG93aW5nIGl0IHRoZQogICAgIC8vIHRyYW5z
aXRpb24gZnJvbSBwYXNzIHRvIHN0b3AgZG9lcyBub3QgaGFwcGVuIHJpZ2h0IGF3YXkuIFNvIHdl
IHNob3VsZCBhZGp1c3QgdGhlCiAgICAgLy8gbG93cGFzcyBmaWx0ZXIgY3V0b2ZmIHNsaWdodGx5
IGRvd253YXJkIHRvIGF2b2lkIHNvbWUgYWxpYXNpbmcgYXQgdGhlIHZlcnkgaGlnaC1lbmQuCi0g
ICAgLy8gRklYTUU6IHRoaXMgdmFsdWUgaXMgZW1waXJpY2FsIGFuZCB0byBiZSBtb3JlIGV4YWN0
IHNob3VsZCB2YXJ5IGRlcGVuZGluZyBvbiBtX2tlcm5lbFNpemUuCisgICAgLy8gRklYTUU6IHRo
aXMgdmFsdWUgaXMgZW1waXJpY2FsIGFuZCB0byBiZSBtb3JlIGV4YWN0IHNob3VsZCB2YXJ5IGRl
cGVuZGluZyBvbiBrZXJuZWxTaXplLgogICAgIHNpbmNTY2FsZUZhY3RvciAqPSAwLjk7CiAKLSAg
ICBpbnQgbiA9IG1fa2VybmVsU2l6ZTsKKyAgICBpbnQgbiA9IGtlcm5lbFNpemU7CiAgICAgaW50
IGhhbGZTaXplID0gbiAvIDI7CiAKICAgICAvLyBHZW5lcmF0ZXMgYSBzZXQgb2Ygd2luZG93ZWQg
c2luYygpIGtlcm5lbHMuCiAgICAgLy8gV2UgZ2VuZXJhdGUgYSByYW5nZSBvZiBzdWItc2FtcGxl
IG9mZnNldHMgZnJvbSAwLjAgdG8gMS4wLgotICAgIGZvciAodW5zaWduZWQgb2Zmc2V0SW5kZXgg
PSAwOyBvZmZzZXRJbmRleCA8PSBtX251bWJlck9mS2VybmVsT2Zmc2V0czsgKytvZmZzZXRJbmRl
eCkgewotICAgICAgICBkb3VibGUgc3Vic2FtcGxlT2Zmc2V0ID0gc3RhdGljX2Nhc3Q8ZG91Ymxl
PihvZmZzZXRJbmRleCkgLyBtX251bWJlck9mS2VybmVsT2Zmc2V0czsKKyAgICBmb3IgKHVuc2ln
bmVkIG9mZnNldEluZGV4ID0gMDsgb2Zmc2V0SW5kZXggPD0gbnVtYmVyT2ZLZXJuZWxPZmZzZXRz
OyArK29mZnNldEluZGV4KSB7CisgICAgICAgIGRvdWJsZSBzdWJzYW1wbGVPZmZzZXQgPSBzdGF0
aWNfY2FzdDxkb3VibGU+KG9mZnNldEluZGV4KSAvIG51bWJlck9mS2VybmVsT2Zmc2V0czsKIAog
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkgewogICAgICAgICAgICAgLy8gQ29t
cHV0ZSB0aGUgc2luYygpIHdpdGggb2Zmc2V0LgpAQCAtMTIwLDcgKzE4Miw3IEBAIHZvaWQgU2lu
Y1Jlc2FtcGxlcjo6aW5pdGlhbGl6ZUtlcm5lbCgpCiAgICAgICAgICAgICBkb3VibGUgd2luZG93
ID0gYTAgLSBhMSAqIGNvcygyLjAgKiBwaURvdWJsZSAqIHgpICsgYTIgKiBjb3MoNC4wICogcGlE
b3VibGUgKiB4KTsKIAogICAgICAgICAgICAgLy8gV2luZG93IHRoZSBzaW5jKCkgZnVuY3Rpb24g
YW5kIHN0b3JlIGF0IHRoZSBjb3JyZWN0IG9mZnNldC4KLSAgICAgICAgICAgIG1fa2VybmVsU3Rv
cmFnZVtpICsgb2Zmc2V0SW5kZXggKiBtX2tlcm5lbFNpemVdID0gc2luYyAqIHdpbmRvdzsKKyAg
ICAgICAgICAgIG1fa2VybmVsU3RvcmFnZVtpICsgb2Zmc2V0SW5kZXggKiBrZXJuZWxTaXplXSA9
IHNpbmMgKiB3aW5kb3c7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0xOTAsNyArMjUyLDcgQEAg
dm9pZCBTaW5jUmVzYW1wbGVyOjpwcm9jZXNzKGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBk
ZXN0aW5hdGlvbiwgdW5zaWduZWQgbnUKICAgICB1bnNpZ25lZCByZW1haW5pbmcgPSBudW1iZXJP
ZkRlc3RpbmF0aW9uRnJhbWVzOwogICAgIAogICAgIHdoaWxlIChyZW1haW5pbmcpIHsKLSAgICAg
ICAgdW5zaWduZWQgZnJhbWVzVGhpc1RpbWUgPSBzdGQ6Om1pbihyZW1haW5pbmcsIG1fYmxvY2tT
aXplKTsKKyAgICAgICAgdW5zaWduZWQgZnJhbWVzVGhpc1RpbWUgPSBzdGQ6Om1pbihyZW1haW5p
bmcsIG1fcmVxdWVzdEZyYW1lcyk7CiAgICAgICAgIHByb2Nlc3MoJnNvdXJjZVByb3ZpZGVyLCBk
ZXN0aW5hdGlvbiwgZnJhbWVzVGhpc1RpbWUpOwogICAgICAgICAKICAgICAgICAgZGVzdGluYXRp
b24gKz0gZnJhbWVzVGhpc1RpbWU7CkBAIC0yMDAsMjcgKzI2MiwxOCBAQCB2b2lkIFNpbmNSZXNh
bXBsZXI6OnByb2Nlc3MoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1
bnNpZ25lZCBudQogCiB2b2lkIFNpbmNSZXNhbXBsZXI6OnByb2Nlc3MoQXVkaW9Tb3VyY2VQcm92
aWRlciogc291cmNlUHJvdmlkZXIsIGZsb2F0KiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1Rv
UHJvY2VzcykKIHsKLSAgICBib29sIGlzR29vZCA9IHNvdXJjZVByb3ZpZGVyICYmIG1fYmxvY2tT
aXplID4gbV9rZXJuZWxTaXplICYmIG1faW5wdXRCdWZmZXIuc2l6ZSgpID49IG1fYmxvY2tTaXpl
ICsgbV9rZXJuZWxTaXplICYmICEobV9rZXJuZWxTaXplICUgMik7Ci0gICAgQVNTRVJUKGlzR29v
ZCk7Ci0gICAgaWYgKCFpc0dvb2QpCisgICAgQVNTRVJUKHNvdXJjZVByb3ZpZGVyKTsKKyAgICBp
ZiAoIXNvdXJjZVByb3ZpZGVyKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgbV9zb3VyY2VQ
cm92aWRlciA9IHNvdXJjZVByb3ZpZGVyOwogCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZEZXN0aW5h
dGlvbkZyYW1lcyA9IGZyYW1lc1RvUHJvY2VzczsKLSAgICAKLSAgICAvLyBTZXR1cCB2YXJpb3Vz
IHJlZ2lvbiBwb2ludGVycyBpbiB0aGUgYnVmZmVyIChzZWUgZGlhZ3JhbSBhYm92ZSkuCi0gICAg
ZmxvYXQqIHIwID0gbV9pbnB1dEJ1ZmZlci5kYXRhKCkgKyBtX2tlcm5lbFNpemUgLyAyOwotICAg
IGZsb2F0KiByMSA9IG1faW5wdXRCdWZmZXIuZGF0YSgpOwotICAgIGZsb2F0KiByMiA9IHIwOwot
ICAgIGZsb2F0KiByMyA9IHIwICsgbV9ibG9ja1NpemUgLSBtX2tlcm5lbFNpemUgLyAyOwotICAg
IGZsb2F0KiByNCA9IHIwICsgbV9ibG9ja1NpemU7Ci0gICAgZmxvYXQqIHI1ID0gcjAgKyBtX2tl
cm5lbFNpemUgLyAyOwogCiAgICAgLy8gU3RlcCAoMSkKICAgICAvLyBQcmltZSB0aGUgaW5wdXQg
YnVmZmVyIGF0IHRoZSBzdGFydCBvZiB0aGUgaW5wdXQgc3RyZWFtLgogICAgIGlmICghbV9pc0J1
ZmZlclByaW1lZCkgewotICAgICAgICBjb25zdW1lU291cmNlKHIwLCBtX2Jsb2NrU2l6ZSArIG1f
a2VybmVsU2l6ZSAvIDIpOworICAgICAgICBjb25zdW1lU291cmNlKG1fcjAsIG1fcmVxdWVzdEZy
YW1lcyk7CiAgICAgICAgIG1faXNCdWZmZXJQcmltZWQgPSB0cnVlOwogICAgIH0KICAgICAKQEAg
LTIzMiwxNCArMjg1LDE0IEBAIHZvaWQgU2luY1Jlc2FtcGxlcjo6cHJvY2VzcyhBdWRpb1NvdXJj
ZVByb3ZpZGVyKiBzb3VyY2VQcm92aWRlciwgZmxvYXQqIGRlc3RpbmF0CiAgICAgICAgICAgICBp
bnQgc291cmNlSW5kZXhJID0gc3RhdGljX2Nhc3Q8aW50PihtX3ZpcnR1YWxTb3VyY2VJbmRleCk7
CiAgICAgICAgICAgICBkb3VibGUgc3Vic2FtcGxlUmVtYWluZGVyID0gbV92aXJ0dWFsU291cmNl
SW5kZXggLSBzb3VyY2VJbmRleEk7CiAKLSAgICAgICAgICAgIGRvdWJsZSB2aXJ0dWFsT2Zmc2V0
SW5kZXggPSBzdWJzYW1wbGVSZW1haW5kZXIgKiBtX251bWJlck9mS2VybmVsT2Zmc2V0czsKKyAg
ICAgICAgICAgIGRvdWJsZSB2aXJ0dWFsT2Zmc2V0SW5kZXggPSBzdWJzYW1wbGVSZW1haW5kZXIg
KiBudW1iZXJPZktlcm5lbE9mZnNldHM7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0SW5kZXggPSBz
dGF0aWNfY2FzdDxpbnQ+KHZpcnR1YWxPZmZzZXRJbmRleCk7CiAgICAgICAgICAgICAKLSAgICAg
ICAgICAgIGZsb2F0KiBrMSA9IG1fa2VybmVsU3RvcmFnZS5kYXRhKCkgKyBvZmZzZXRJbmRleCAq
IG1fa2VybmVsU2l6ZTsKLSAgICAgICAgICAgIGZsb2F0KiBrMiA9IGsxICsgbV9rZXJuZWxTaXpl
OworICAgICAgICAgICAgZmxvYXQqIGsxID0gbV9rZXJuZWxTdG9yYWdlLmRhdGEoKSArIG9mZnNl
dEluZGV4ICoga2VybmVsU2l6ZTsKKyAgICAgICAgICAgIGZsb2F0KiBrMiA9IGsxICsga2VybmVs
U2l6ZTsKIAogICAgICAgICAgICAgLy8gSW5pdGlhbGl6ZSBpbnB1dCBwb2ludGVyIGJhc2VkIG9u
IHF1YW50aXplZCBtX3ZpcnR1YWxTb3VyY2VJbmRleC4KLSAgICAgICAgICAgIGZsb2F0KiBpbnB1
dFAgPSByMSArIHNvdXJjZUluZGV4STsKKyAgICAgICAgICAgIGZsb2F0KiBpbnB1dFAgPSBtX3Ix
ICsgc291cmNlSW5kZXhJOwogCiAgICAgICAgICAgICAvLyBXZSdsbCBjb21wdXRlICJjb252b2x1
dGlvbnMiIGZvciB0aGUgdHdvIGtlcm5lbHMgd2hpY2ggc3RyYWRkbGUgbV92aXJ0dWFsU291cmNl
SW5kZXgKICAgICAgICAgICAgIGZsb2F0IHN1bTEgPSAwOwpAQCAtMjQ5LDcgKzMwMiw3IEBAIHZv
aWQgU2luY1Jlc2FtcGxlcjo6cHJvY2VzcyhBdWRpb1NvdXJjZVByb3ZpZGVyKiBzb3VyY2VQcm92
aWRlciwgZmxvYXQqIGRlc3RpbmF0CiAgICAgICAgICAgICBkb3VibGUga2VybmVsSW50ZXJwb2xh
dGlvbkZhY3RvciA9IHZpcnR1YWxPZmZzZXRJbmRleCAtIG9mZnNldEluZGV4OwogCiAgICAgICAg
ICAgICAvLyBHZW5lcmF0ZSBhIHNpbmdsZSBvdXRwdXQgc2FtcGxlLiAKLSAgICAgICAgICAgIGlu
dCBuID0gbV9rZXJuZWxTaXplOworICAgICAgICAgICAgaW50IG4gPSBrZXJuZWxTaXplOwogCiAj
ZGVmaW5lIENPTlZPTFZFX09ORV9TQU1QTEUgICAgICBcCiAgICAgICAgICAgICBpbnB1dCA9ICpp
bnB1dFArKzsgICBcCkBAIC00NTUsMTYgKzUwOCwyMCBAQCB2b2lkIFNpbmNSZXNhbXBsZXI6OnBy
b2Nlc3MoQXVkaW9Tb3VyY2VQcm92aWRlciogc291cmNlUHJvdmlkZXIsIGZsb2F0KiBkZXN0aW5h
dAogICAgICAgICB9CiAKICAgICAgICAgLy8gV3JhcCBiYWNrIGFyb3VuZCB0byB0aGUgc3RhcnQu
CisgICAgICAgIEFTU0VSVChtX3ZpcnR1YWxTb3VyY2VJbmRleCA+PSBtX2Jsb2NrU2l6ZSk7CiAg
ICAgICAgIG1fdmlydHVhbFNvdXJjZUluZGV4IC09IG1fYmxvY2tTaXplOwogCi0gICAgICAgIC8v
IFN0ZXAgKDMpIENvcHkgcjMgdG8gcjEgYW5kIHI0IHRvIHIyLgorICAgICAgICAvLyBTdGVwICgz
KSBDb3B5IHIzIHRvIHIxLgogICAgICAgICAvLyBUaGlzIHdyYXBzIHRoZSBsYXN0IGlucHV0IGZy
YW1lcyBiYWNrIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLgotICAgICAgICBtZW1jcHkocjEs
IHIzLCBzaXplb2YoZmxvYXQpICogKG1fa2VybmVsU2l6ZSAvIDIpKTsKLSAgICAgICAgbWVtY3B5
KHIyLCByNCwgc2l6ZW9mKGZsb2F0KSAqIChtX2tlcm5lbFNpemUgLyAyKSk7CisgICAgICAgIG1l
bWNweShtX3IxLCBtX3IzLCBzaXplb2YoZmxvYXQpICoga2VybmVsU2l6ZSk7CisKKyAgICAgICAg
Ly8gU3RlcCAoNCkgLS0gUmVpbml0aWFsaXplIHJlZ2lvbnMgaWYgbmVjZXNzYXJ5LgorICAgICAg
ICBpZiAobV9yMCA9PSBtX3IyKQorICAgICAgICAgICAgdXBkYXRlUmVnaW9ucyh0cnVlKTsKIAot
ICAgICAgICAvLyBTdGVwICg0KQorICAgICAgICAvLyBTdGVwICg1KQogICAgICAgICAvLyBSZWZy
ZXNoIHRoZSBidWZmZXIgd2l0aCBtb3JlIGlucHV0LgotICAgICAgICBjb25zdW1lU291cmNlKHI1
LCBtX2Jsb2NrU2l6ZSk7CisgICAgICAgIGNvbnN1bWVTb3VyY2UobV9yMCwgbV9yZXF1ZXN0RnJh
bWVzKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1NpbmNSZXNhbXBsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNS
ZXNhbXBsZXIuaAppbmRleCBiMTZlYjUxMzI1ODhkYjVmMWE5MTg1NTYwY2RlOTdkODFkYzRkYTI1
Li45M2JmMDRkOTBmMDJiMjdjNzk1OWUxYjkzYjM2NzQyZGRmZDk3YzY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5oCkBAIC0zOSwxMSArMzksMTAg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTaW5jUmVzYW1wbGVyIGZpbmFsIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzogICAKK3B1YmxpYzoKICAgICAvLyBz
Y2FsZUZhY3RvciA9PSBzb3VyY2VTYW1wbGVSYXRlIC8gZGVzdGluYXRpb25TYW1wbGVSYXRlCi0g
ICAgLy8ga2VybmVsU2l6ZSBjYW4gYmUgYWRqdXN0ZWQgZm9yIHF1YWxpdHkgKGhpZ2hlciBpcyBi
ZXR0ZXIpCi0gICAgLy8gbnVtYmVyT2ZLZXJuZWxPZmZzZXRzIGlzIHVzZWQgZm9yIGludGVycG9s
YXRpb24gYW5kIGlzIHRoZSBudW1iZXIgb2Ygc3ViLXNhbXBsZSBrZXJuZWwgc2hpZnRzLgotICAg
IFNpbmNSZXNhbXBsZXIoZG91YmxlIHNjYWxlRmFjdG9yLCB1bnNpZ25lZCBrZXJuZWxTaXplID0g
MzIsIHVuc2lnbmVkIG51bWJlck9mS2VybmVsT2Zmc2V0cyA9IDMyKTsKKyAgICAvLyByZXF1ZXN0
RnJhbWVzIGNvbnRyb2xzIHRoZSBzaXplIGluIGZyYW1lcyBvZiB0aGUgYnVmZmVyIHJlcXVlc3Rl
ZCBieSBlYWNoIHByb3ZpZGVJbnB1dCgpIGNhbGwuCisgICAgU2luY1Jlc2FtcGxlcihkb3VibGUg
c2NhbGVGYWN0b3IsIE9wdGlvbmFsPHVuc2lnbmVkPiByZXF1ZXN0RnJhbWVzID0gV1RGOjpudWxs
b3B0KTsKICAgICAKICAgICAvLyBQcm9jZXNzZXMgbnVtYmVyT2ZTb3VyY2VGcmFtZXMgZnJvbSBz
b3VyY2UgdG8gcHJvZHVjZSBudW1iZXJPZlNvdXJjZUZyYW1lcyAvIHNjYWxlRmFjdG9yIGZyYW1l
cyBpbiBkZXN0aW5hdGlvbi4KICAgICB2b2lkIHByb2Nlc3MoY29uc3QgZmxvYXQqIHNvdXJjZSwg
ZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBudW1iZXJPZlNvdXJjZUZyYW1lcyk7CkBAIC01
NCwxMCArNTMsOSBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBpbml0aWFsaXplS2Vy
bmVsKCk7CiAgICAgdm9pZCBjb25zdW1lU291cmNlKGZsb2F0KiBidWZmZXIsIHVuc2lnbmVkIG51
bWJlck9mU291cmNlRnJhbWVzKTsKKyAgICB2b2lkIHVwZGF0ZVJlZ2lvbnMoYm9vbCBpc1NlY29u
ZExvYWQpOwogICAgIAogICAgIGRvdWJsZSBtX3NjYWxlRmFjdG9yOwotICAgIHVuc2lnbmVkIG1f
a2VybmVsU2l6ZTsKLSAgICB1bnNpZ25lZCBtX251bWJlck9mS2VybmVsT2Zmc2V0czsKIAogICAg
IC8vIG1fa2VybmVsU3RvcmFnZSBoYXMgbV9udW1iZXJPZktlcm5lbE9mZnNldHMga2VybmVscyBi
YWNrLXRvLWJhY2ssIGVhY2ggb2Ygc2l6ZSBtX2tlcm5lbFNpemUuCiAgICAgLy8gVGhlIGtlcm5l
bCBvZmZzZXRzIGFyZSBzdWItc2FtcGxlIHNoaWZ0cyBvZiBhIHdpbmRvd2VkIHNpbmMoKSBzaGlm
dGVkIGZyb20gMC4wIHRvIDEuMCBzYW1wbGUuCkBAIC02NSwyMiArNjMsMzMgQEAgcHJvdGVjdGVk
OgogICAgIAogICAgIC8vIG1fdmlydHVhbFNvdXJjZUluZGV4IGlzIGFuIGluZGV4IG9uIHRoZSBz
b3VyY2UgaW5wdXQgYnVmZmVyIHdpdGggc3ViLXNhbXBsZSBwcmVjaXNpb24uCiAgICAgLy8gSXQg
bXVzdCBiZSBkb3VibGUgcHJlY2lzaW9uIHRvIGF2b2lkIGRyaWZ0LgotICAgIGRvdWJsZSBtX3Zp
cnR1YWxTb3VyY2VJbmRleDsKKyAgICBkb3VibGUgbV92aXJ0dWFsU291cmNlSW5kZXggeyAwIH07
CiAgICAgCiAgICAgLy8gVGhpcyBpcyB0aGUgbnVtYmVyIG9mIGRlc3RpbmF0aW9uIGZyYW1lcyB3
ZSBnZW5lcmF0ZSBwZXIgcHJvY2Vzc2luZyBwYXNzIG9uIHRoZSBidWZmZXIuCi0gICAgdW5zaWdu
ZWQgbV9ibG9ja1NpemU7CisgICAgdW5zaWduZWQgbV9yZXF1ZXN0RnJhbWVzOworCisgICAgLy8g
VGhlIG51bWJlciBvZiBzb3VyY2UgZnJhbWVzIHByb2Nlc3NlZCBwZXIgcGFzcy4KKyAgICB1bnNp
Z25lZCBtX2Jsb2NrU2l6ZSB7IDAgfTsKIAogICAgIC8vIFNvdXJjZSBpcyBjb3BpZWQgaW50byB0
aGlzIGJ1ZmZlciBmb3IgZWFjaCBwcm9jZXNzaW5nIHBhc3MuCiAgICAgQXVkaW9GbG9hdEFycmF5
IG1faW5wdXRCdWZmZXI7CiAKLSAgICBjb25zdCBmbG9hdCogbV9zb3VyY2U7Ci0gICAgdW5zaWdu
ZWQgbV9zb3VyY2VGcmFtZXNBdmFpbGFibGU7CisgICAgLy8gUG9pbnRlcnMgdG8gdGhlIHZhcmlv
dXMgcmVnaW9ucyBpbnNpZGUgfG1faW5wdXRCdWZmZXJ8LiBTZWUgdGhlIGRpYWdyYW0gYXQKKyAg
ICAvLyB0aGUgdG9wIG9mIHRoZSAuY3BwIGZpbGUgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAg
ZmxvYXQqIG1fcjAgeyBudWxscHRyIH07CisgICAgZmxvYXQqIGNvbnN0IG1fcjEgeyBudWxscHRy
IH07CisgICAgZmxvYXQqIGNvbnN0IG1fcjIgeyBudWxscHRyIH07CisgICAgZmxvYXQqIG1fcjMg
eyBudWxscHRyIH07CisgICAgZmxvYXQqIG1fcjQgeyBudWxscHRyIH07CisKKyAgICBjb25zdCBm
bG9hdCogbV9zb3VyY2UgeyBudWxscHRyIH07CisgICAgdW5zaWduZWQgbV9zb3VyY2VGcmFtZXNB
dmFpbGFibGUgeyAwIH07CiAgICAgCiAgICAgLy8gbV9zb3VyY2VQcm92aWRlciBpcyB1c2VkIHRv
IHByb3ZpZGUgdGhlIGF1ZGlvIGlucHV0IHN0cmVhbSB0byB0aGUgcmVzYW1wbGVyLgotICAgIEF1
ZGlvU291cmNlUHJvdmlkZXIqIG1fc291cmNlUHJvdmlkZXI7ICAgIAorICAgIEF1ZGlvU291cmNl
UHJvdmlkZXIqIG1fc291cmNlUHJvdmlkZXIgeyBudWxscHRyIH07CiAKICAgICAvLyBUaGUgYnVm
ZmVyIGlzIHByaW1lZCBvbmNlIGF0IHRoZSB2ZXJ5IGJlZ2lubmluZyBvZiBwcm9jZXNzaW5nLgot
ICAgIGJvb2wgbV9pc0J1ZmZlclByaW1lZDsKKyAgICBib29sIG1faXNCdWZmZXJQcmltZWQgeyBm
YWxzZSB9OwogCiAgICAgUmVmUHRyPEF1ZGlvQnVzPiBtX2ludGVybmFsQnVzOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRp
b25Db2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rl
c3RpbmF0aW9uQ29jb2EuY3BwCmluZGV4IGFlNjM1MGZjMTFhNDY5NDc4ZTgwYzBiZmMzMzdjMjA4
YjgzOTNlNGUuLjc3NWQ2MmRlOGFkZTc5OTgzN2I0MDVjOWE0MTk2ODI1NGVmNWQyMzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRp
b25Db2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVk
aW9EZXN0aW5hdGlvbkNvY29hLmNwcApAQCAtMjksMTMgKzI5LDE2IEBACiAjaWYgRU5BQkxFKFdF
Ql9BVURJTykKIAogI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCi0jaW5jbHVkZSAiQXVkaW9JT0NhbGxi
YWNrLmgiCiAjaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgor
I2luY2x1ZGUgIk11bHRpQ2hhbm5lbFJlc2FtcGxlci5oIgorI2luY2x1ZGUgIlB1c2hQdWxsRklG
Ty5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNvbnN0IGludCBrUmVuZGVyQnVmZmVyU2l6
ZSA9IDEyODsKK2NvbnN0ZXhwciBzaXplX3Qga1JlbmRlckJ1ZmZlclNpemUgPSAxMjg7CisKK2Nv
bnN0ZXhwciBzaXplX3QgZmlmb1NpemUgPSA5NiAqIGtSZW5kZXJCdWZmZXJTaXplOwogCiBDcmVh
dGVBdWRpb0Rlc3RpbmF0aW9uQ29jb2FPdmVycmlkZSBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OmNy
ZWF0ZU92ZXJyaWRlID0gbnVsbHB0cjsKIApAQCAtNjgsMTQgKzcxLDI0IEBAIHVuc2lnbmVkIGxv
bmcgQXVkaW9EZXN0aW5hdGlvbjo6bWF4Q2hhbm5lbENvdW50KCkKICAgICByZXR1cm4gQXVkaW9T
ZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkubWF4aW11bU51bWJlck9mT3V0cHV0Q2hhbm5lbHMoKTsK
IH0KIAorLy8gRklYTUU6IFdlIHNob3VsZCBub3QgYmUgaGFyZGNvZGluZyB0aGUgbnVtYmVyIG9m
IGlucHV0IGNoYW5uZWxzLgorY29uc3RleHByIHVuc2lnbmVkIGxlZ2FjeU51bWJlck9mT3V0cHV0
Q2hhbm5lbHMgeyAyIH07CisKIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6QXVkaW9EZXN0aW5hdGlv
bkNvY29hKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ssIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAg
OiBtX291dHB1dFVuaXQoMCkKICAgICAsIG1fY2FsbGJhY2soY2FsbGJhY2spCi0gICAgLCBtX3Jl
bmRlckJ1cyhBdWRpb0J1czo6Y3JlYXRlKDIsIGtSZW5kZXJCdWZmZXJTaXplLCBmYWxzZSkucmVs
ZWFzZU5vbk51bGwoKSkKLSAgICAsIG1fc3BhcmVCdXMoQXVkaW9CdXM6OmNyZWF0ZSgyLCBrUmVu
ZGVyQnVmZmVyU2l6ZSwgdHJ1ZSkucmVsZWFzZU5vbk51bGwoKSkKLSAgICAsIG1fc2FtcGxlUmF0
ZShzYW1wbGVSYXRlKQorICAgICwgbV9vdXRwdXRCdXMoQXVkaW9CdXM6OmNyZWF0ZShsZWdhY3lO
dW1iZXJPZk91dHB1dENoYW5uZWxzLCBrUmVuZGVyQnVmZmVyU2l6ZSwgZmFsc2UpLnJlbGVhc2VO
b25OdWxsKCkpCisgICAgLCBtX3JlbmRlckJ1cyhBdWRpb0J1czo6Y3JlYXRlKGxlZ2FjeU51bWJl
ck9mT3V0cHV0Q2hhbm5lbHMsIGtSZW5kZXJCdWZmZXJTaXplKS5yZWxlYXNlTm9uTnVsbCgpKQor
ICAgICwgbV9maWZvKG1ha2VVbmlxdWVSZWY8UHVzaFB1bGxGSUZPPihsZWdhY3lOdW1iZXJPZk91
dHB1dENoYW5uZWxzLCBmaWZvU2l6ZSkpCisgICAgLCBtX2NvbnRleHRTYW1wbGVSYXRlKHNhbXBs
ZVJhdGUpCiB7CiAgICAgY29uZmlndXJlKCk7CisKKyAgICBhdXRvIGhhcmR3YXJlU2FtcGxlUmF0
ZSA9IHRoaXMtPmhhcmR3YXJlU2FtcGxlUmF0ZSgpOworICAgIGlmIChzYW1wbGVSYXRlICE9IGhh
cmR3YXJlU2FtcGxlUmF0ZSkgeworICAgICAgICBkb3VibGUgc2NhbGVGYWN0b3IgPSBzdGF0aWNf
Y2FzdDxkb3VibGU+KHNhbXBsZVJhdGUpIC8gaGFyZHdhcmVTYW1wbGVSYXRlOworICAgICAgICBt
X3Jlc2FtcGxlciA9IG1ha2VVbmlxdWU8TXVsdGlDaGFubmVsUmVzYW1wbGVyPihzY2FsZUZhY3Rv
ciwgbGVnYWN5TnVtYmVyT2ZPdXRwdXRDaGFubmVscywga1JlbmRlckJ1ZmZlclNpemUpOworICAg
IH0KIH0KIAogQXVkaW9EZXN0aW5hdGlvbkNvY29hOjp+QXVkaW9EZXN0aW5hdGlvbkNvY29hKCkK
QEAgLTExNiwxMSArMTI5LDExIEBAIHZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzZXRJc1Bs
YXlpbmcoYm9vbCBpc1BsYXlpbmcpCiAgICAgbV9jYWxsYmFjay5pc1BsYXlpbmdEaWRDaGFuZ2Uo
KTsKIH0KIAotdm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnNldEF1ZGlvU3RyZWFtQmFzaWNE
ZXNjcmlwdGlvbihBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24mIHN0cmVhbUZvcm1hdCwgZmxv
YXQgc2FtcGxlUmF0ZSkKK3ZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzZXRBdWRpb1N0cmVh
bUJhc2ljRGVzY3JpcHRpb24oQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiBzdHJlYW1Gb3Jt
YXQpCiB7CiAgICAgY29uc3QgaW50IGJ5dGVzUGVyRmxvYXQgPSBzaXplb2YoRmxvYXQzMik7CiAg
ICAgY29uc3QgaW50IGJpdHNQZXJCeXRlID0gODsKLSAgICBzdHJlYW1Gb3JtYXQubVNhbXBsZVJh
dGUgPSBzYW1wbGVSYXRlOworICAgIHN0cmVhbUZvcm1hdC5tU2FtcGxlUmF0ZSA9IGhhcmR3YXJl
U2FtcGxlUmF0ZSgpOwogICAgIHN0cmVhbUZvcm1hdC5tRm9ybWF0SUQgPSBrQXVkaW9Gb3JtYXRM
aW5lYXJQQ007CiAgICAgc3RyZWFtRm9ybWF0Lm1Gb3JtYXRGbGFncyA9IGtBdWRpb0Zvcm1hdEZs
YWdzTmF0aXZlRmxvYXRQYWNrZWQgfCBrQXVkaW9Gb3JtYXRGbGFnSXNOb25JbnRlcmxlYXZlZDsK
ICAgICBzdHJlYW1Gb3JtYXQubUJ5dGVzUGVyUGFja2V0ID0gYnl0ZXNQZXJGbG9hdDsKQEAgLTE0
Myw0NCArMTU2LDMxIEBAIHN0YXRpYyB2b2lkIGFzc2lnbkF1ZGlvQnVmZmVyc1RvQnVzKEF1ZGlv
QnVmZmVyKiBidWZmZXJzLCBBdWRpb0J1cyYgYnVzLCBVSW50MzIKIC8vIFB1bGxzIG9uIG91ciBw
cm92aWRlciB0byBnZXQgcmVuZGVyZWQgYXVkaW8gc3RyZWFtLgogT1NTdGF0dXMgQXVkaW9EZXN0
aW5hdGlvbkNvY29hOjpyZW5kZXIoY29uc3QgQXVkaW9UaW1lU3RhbXAqIHRpbWVzdGFtcCwgVUlu
dDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSkKIHsKLSAgICBBdWRp
b0lPUG9zaXRpb24gb3V0cHV0VGltZXN0YW1wOworICAgIGlmIChtX2ZpZm8tPmxlbmd0aCgpIDwg
bnVtYmVyT2ZGcmFtZXMpCisgICAgICAgIHJldHVybiBub0VycjsKKwogICAgIGlmICh0aW1lc3Rh
bXApIHsKLSAgICAgICAgb3V0cHV0VGltZXN0YW1wID0gewotICAgICAgICAgICAgU2Vjb25kcyB7
IHRpbWVzdGFtcC0+bVNhbXBsZVRpbWUgLyBtX3NhbXBsZVJhdGUgfSwKKyAgICAgICAgbV9vdXRw
dXRUaW1lc3RhbXAgPSB7CisgICAgICAgICAgICBTZWNvbmRzIHsgdGltZXN0YW1wLT5tU2FtcGxl
VGltZSAvIHNhbXBsZVJhdGUoKSB9LAogICAgICAgICAgICAgTW9ub3RvbmljVGltZTo6ZnJvbU1h
Y2hBYnNvbHV0ZVRpbWUodGltZXN0YW1wLT5tSG9zdFRpbWUpCiAgICAgICAgIH07Ci0gICAgfQor
ICAgIH0gZWxzZQorICAgICAgICBtX291dHB1dFRpbWVzdGFtcCA9IEF1ZGlvSU9Qb3NpdGlvbiB7
IH07CisKICAgICBhdXRvKiBidWZmZXJzID0gaW9EYXRhLT5tQnVmZmVyczsKICAgICBVSW50MzIg
bnVtYmVyT2ZCdWZmZXJzID0gaW9EYXRhLT5tTnVtYmVyQnVmZmVyczsKLSAgICBVSW50MzIgZnJh
bWVzUmVtYWluaW5nID0gbnVtYmVyT2ZGcmFtZXM7Ci0gICAgVUludDMyIGZyYW1lT2Zmc2V0ID0g
MDsKLSAgICB3aGlsZSAoZnJhbWVzUmVtYWluaW5nID4gMCkgewotICAgICAgICBpZiAobV9zdGFy
dFNwYXJlRnJhbWUgPCBtX2VuZFNwYXJlRnJhbWUpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX3N0
YXJ0U3BhcmVGcmFtZSA8IG1fZW5kU3BhcmVGcmFtZSk7Ci0gICAgICAgICAgICBVSW50MzIgZnJh
bWVzVGhpc1RpbWUgPSBzdGQ6Om1pbjxVSW50MzI+KG1fZW5kU3BhcmVGcmFtZSAtIG1fc3RhcnRT
cGFyZUZyYW1lLCBudW1iZXJPZkZyYW1lcyk7Ci0gICAgICAgICAgICBhc3NpZ25BdWRpb0J1ZmZl
cnNUb0J1cyhidWZmZXJzLCBtX3JlbmRlckJ1cy5nZXQoKSwgbnVtYmVyT2ZCdWZmZXJzLCBudW1i
ZXJPZkZyYW1lcywgZnJhbWVPZmZzZXQsIGZyYW1lc1RoaXNUaW1lKTsKLSAgICAgICAgICAgIG1f
cmVuZGVyQnVzLT5jb3B5RnJvbVJhbmdlKG1fc3BhcmVCdXMuZ2V0KCksIG1fc3RhcnRTcGFyZUZy
YW1lLCBtX2VuZFNwYXJlRnJhbWUpOwotICAgICAgICAgICAgcHJvY2Vzc0J1c0FmdGVyUmVuZGVy
KG1fcmVuZGVyQnVzLmdldCgpLCBmcmFtZXNUaGlzVGltZSk7Ci0gICAgICAgICAgICBmcmFtZU9m
ZnNldCArPSBmcmFtZXNUaGlzVGltZTsKLSAgICAgICAgICAgIGZyYW1lc1JlbWFpbmluZyAtPSBm
cmFtZXNUaGlzVGltZTsKLSAgICAgICAgICAgIG1fc3RhcnRTcGFyZUZyYW1lICs9IGZyYW1lc1Ro
aXNUaW1lOwotICAgICAgICB9Ci0KLSAgICAgICAgVUludDMyIGZyYW1lc1RoaXNUaW1lID0gc3Rk
OjptaW48VUludDMyPihrUmVuZGVyQnVmZmVyU2l6ZSwgZnJhbWVzUmVtYWluaW5nKTsKLSAgICAg
ICAgYXNzaWduQXVkaW9CdWZmZXJzVG9CdXMoYnVmZmVycywgbV9yZW5kZXJCdXMuZ2V0KCksIG51
bWJlck9mQnVmZmVycywgbnVtYmVyT2ZGcmFtZXMsIGZyYW1lT2Zmc2V0LCBmcmFtZXNUaGlzVGlt
ZSk7Ci0KLSAgICAgICAgaWYgKCFmcmFtZXNUaGlzVGltZSkKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBpZiAoZnJhbWVzVGhpc1RpbWUgPCBrUmVuZGVyQnVmZmVyU2l6ZSkgewotICAgICAg
ICAgICAgbV9jYWxsYmFjay5yZW5kZXIoMCwgbV9zcGFyZUJ1cy5wdHIoKSwga1JlbmRlckJ1ZmZl
clNpemUsIG91dHB1dFRpbWVzdGFtcCk7Ci0gICAgICAgICAgICBtX3JlbmRlckJ1cy0+Y29weUZy
b21SYW5nZShtX3NwYXJlQnVzLmdldCgpLCAwLCBmcmFtZXNUaGlzVGltZSk7Ci0gICAgICAgICAg
ICBtX3N0YXJ0U3BhcmVGcmFtZSA9IGZyYW1lc1RoaXNUaW1lOwotICAgICAgICAgICAgbV9lbmRT
cGFyZUZyYW1lID0ga1JlbmRlckJ1ZmZlclNpemU7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgbV9jYWxsYmFjay5yZW5kZXIoMCwgbV9yZW5kZXJCdXMucHRyKCksIGZyYW1lc1RoaXNUaW1l
LCBvdXRwdXRUaW1lc3RhbXApOwotICAgICAgICBwcm9jZXNzQnVzQWZ0ZXJSZW5kZXIobV9yZW5k
ZXJCdXMuZ2V0KCksIGZyYW1lc1RoaXNUaW1lKTsKLSAgICAgICAgZnJhbWVPZmZzZXQgKz0gZnJh
bWVzVGhpc1RpbWU7Ci0gICAgICAgIGZyYW1lc1JlbWFpbmluZyAtPSBmcmFtZXNUaGlzVGltZTsK
KworICAgIC8vIEFzc29jaWF0ZSB0aGUgZGVzdGluYXRpb24gZGF0YSBhcnJheSB3aXRoIHRoZSBv
dXRwdXQgYnVzIHRoZW4gZmlsbCB0aGUgRklGTy4KKyAgICBhc3NpZ25BdWRpb0J1ZmZlcnNUb0J1
cyhidWZmZXJzLCBtX291dHB1dEJ1cy5nZXQoKSwgbnVtYmVyT2ZCdWZmZXJzLCBudW1iZXJPZkZy
YW1lcywgMCwgbnVtYmVyT2ZGcmFtZXMpOworICAgIHNpemVfdCBmcmFtZXNUb1JlbmRlciA9IG1f
Zmlmby0+cHVsbChtX291dHB1dEJ1cy5wdHIoKSwgbnVtYmVyT2ZGcmFtZXMpOworCisgICAgZm9y
IChzaXplX3QgcHVzaGVkRnJhbWVzID0gMDsgcHVzaGVkRnJhbWVzIDwgZnJhbWVzVG9SZW5kZXI7
IHB1c2hlZEZyYW1lcyArPSBrUmVuZGVyQnVmZmVyU2l6ZSkgeworICAgICAgICBpZiAobV9yZXNh
bXBsZXIpCisgICAgICAgICAgICBtX3Jlc2FtcGxlci0+cHJvY2Vzcyh0aGlzLCBtX3JlbmRlckJ1
cy5wdHIoKSwga1JlbmRlckJ1ZmZlclNpemUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBt
X2NhbGxiYWNrLnJlbmRlcigwLCBtX3JlbmRlckJ1cy5wdHIoKSwga1JlbmRlckJ1ZmZlclNpemUs
IG1fb3V0cHV0VGltZXN0YW1wKTsKKworICAgICAgICBtX2ZpZm8tPnB1c2gobV9yZW5kZXJCdXMu
cHRyKCkpOwogICAgIH0KIAogICAgIHJldHVybiBub0VycjsKQEAgLTE5Myw2ICsxOTMsMTIgQEAg
T1NTdGF0dXMgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjppbnB1dFByb2Modm9pZCogdXNlckRhdGEs
IEF1ZGlvVW5pdFJlbmRlckFjdGlvbkYKICAgICByZXR1cm4gYXVkaW9PdXRwdXQtPnJlbmRlcih0
aW1lc3RhbXAsIG51bWJlck9mRnJhbWVzLCBpb0RhdGEpOwogfQogCit2b2lkIEF1ZGlvRGVzdGlu
YXRpb25Db2NvYTo6cHJvdmlkZUlucHV0KEF1ZGlvQnVzKiBidXMsIHNpemVfdCBmcmFtZXNUb1By
b2Nlc3MpCit7CisgICAgQVNTRVJUX1VOVVNFRChmcmFtZXNUb1Byb2Nlc3MsIGZyYW1lc1RvUHJv
Y2VzcyA9PSBrUmVuZGVyQnVmZmVyU2l6ZSk7CisgICAgbV9jYWxsYmFjay5yZW5kZXIoMCwgYnVz
LCBrUmVuZGVyQnVmZmVyU2l6ZSwgbV9vdXRwdXRUaW1lc3RhbXApOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29h
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9u
Q29jb2EuaAppbmRleCAzOTI4OGVhOWZiMzI0YmJhMzFkMTdjMjM2MDhlMTE1Y2FjYzAzMWFlLi5h
ZmI2MzA5Mjc2NTYwMDRlOGVhOTUxY2YxMzZhMTMwNzc0ZTIzNTYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9u
Q29jb2EuaApAQCAtMjgsMTcgKzI4LDIyIEBACiAjaWYgRU5BQkxFKFdFQl9BVURJTykKIAogI2lu
Y2x1ZGUgIkF1ZGlvRGVzdGluYXRpb24uaCIKKyNpbmNsdWRlICJBdWRpb0lPQ2FsbGJhY2suaCIK
KyNpbmNsdWRlICJBdWRpb1NvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSA8QXVkaW9Vbml0L0F1
ZGlvVW5pdC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVl
UmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9CdXM7CitjbGFzcyBN
dWx0aUNoYW5uZWxSZXNhbXBsZXI7CitjbGFzcyBQdXNoUHVsbEZJRk87CiAKIHVzaW5nIENyZWF0
ZUF1ZGlvRGVzdGluYXRpb25Db2NvYU92ZXJyaWRlID0gc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVz
dGluYXRpb24+KCopKEF1ZGlvSU9DYWxsYmFjayYsIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAvLyBB
biBBdWRpb0Rlc3RpbmF0aW9uIHVzaW5nIENvcmVBdWRpbydzIGRlZmF1bHQgb3V0cHV0IEF1ZGlv
VW5pdAotY2xhc3MgQXVkaW9EZXN0aW5hdGlvbkNvY29hIDogcHVibGljIEF1ZGlvRGVzdGluYXRp
b24geworY2xhc3MgQXVkaW9EZXN0aW5hdGlvbkNvY29hIDogcHVibGljIEF1ZGlvRGVzdGluYXRp
b24sIHB1YmxpYyBBdWRpb1NvdXJjZVByb3ZpZGVyIHsKIHB1YmxpYzoKICAgICBBdWRpb0Rlc3Rp
bmF0aW9uQ29jb2EoQXVkaW9JT0NhbGxiYWNrJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAgICAgdmly
dHVhbCB+QXVkaW9EZXN0aW5hdGlvbkNvY29hKCk7CkBAIC00OSwxNCArNTQsMTQgQEAgcHJvdGVj
dGVkOgogICAgIHZvaWQgc2V0SXNQbGF5aW5nKGJvb2wpOwogCiAgICAgYm9vbCBpc1BsYXlpbmco
KSBmaW5hbCB7IHJldHVybiBtX2lzUGxheWluZzsgfQotICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3NhbXBsZVJhdGU7IH0KKyAgICBmbG9hdCBzYW1wbGVSYXRl
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb250ZXh0U2FtcGxlUmF0ZTsgfQogICAgIHVuc2ln
bmVkIGZyYW1lc1BlckJ1ZmZlcigpIGNvbnN0IGZpbmFsOwogICAgIEF1ZGlvVW5pdCYgb3V0cHV0
VW5pdCgpIHsgcmV0dXJuIG1fb3V0cHV0VW5pdDsgfQogICAgIAogICAgIC8vIERlZmF1bHRPdXRw
dXRVbml0IGNhbGxiYWNrCiAgICAgc3RhdGljIE9TU3RhdHVzIGlucHV0UHJvYyh2b2lkKiB1c2Vy
RGF0YSwgQXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MqLCBjb25zdCBBdWRpb1RpbWVTdGFtcCos
IFVJbnQzMiBidXNOdW1iZXIsIFVJbnQzMiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0
KiBpb0RhdGEpOwogCi0gICAgdm9pZCBzZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oQXVk
aW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgdm9pZCBz
ZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9u
Jik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydCgpIG92ZXJyaWRlOwpAQCAtNjQsNiArNjks
OSBAQCBwcml2YXRlOgogCiAgICAgZnJpZW5kIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0Rlc3RpbmF0
aW9uPiBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoQXVkaW9JT0NhbGxiYWNrJiwgY29uc3QgU3Ry
aW5nJiwgdW5zaWduZWQsIHVuc2lnbmVkLCBmbG9hdCk7CiAgICAgCisgICAgLy8gQXVkaW9Tb3Vy
Y2VQcm92aWRlci4KKyAgICB2b2lkIHByb3ZpZGVJbnB1dChBdWRpb0J1cyosIHNpemVfdCBmcmFt
ZXNUb1Byb2Nlc3MpIGZpbmFsOworCiAgICAgdm9pZCBjb25maWd1cmUoKTsKICAgICB2b2lkIHBy
b2Nlc3NCdXNBZnRlclJlbmRlcihBdWRpb0J1cyYsIFVJbnQzMiBudW1iZXJPZkZyYW1lcyk7CiAK
QEAgLTcxLDE0ICs3OSwyMiBAQCBwcml2YXRlOgogCiAgICAgQXVkaW9Vbml0IG1fb3V0cHV0VW5p
dDsKICAgICBBdWRpb0lPQ2FsbGJhY2smIG1fY2FsbGJhY2s7CisKKyAgICAvLyBUbyBwYXNzIHRo
ZSBkYXRhIGZyb20gRklGTyB0byB0aGUgYXVkaW8gZGV2aWNlIGNhbGxiYWNrLgorICAgIFJlZjxB
dWRpb0J1cz4gbV9vdXRwdXRCdXM7CisKKyAgICAvLyBUbyBwdXNoIHRoZSByZW5kZXJlZCByZXN1
bHQgZnJvbSBXZWJBdWRpbyBncmFwaCBpbnRvIHRoZSBGSUZPLgogICAgIFJlZjxBdWRpb0J1cz4g
bV9yZW5kZXJCdXM7Ci0gICAgUmVmPEF1ZGlvQnVzPiBtX3NwYXJlQnVzOwogCi0gICAgZmxvYXQg
bV9zYW1wbGVSYXRlOwotICAgIGJvb2wgbV9pc1BsYXlpbmcgeyBmYWxzZSB9OworICAgIC8vIFJl
c29sdmVzIHRoZSBidWZmZXIgc2l6ZSBtaXNtYXRjaCBiZXR3ZWVuIHRoZSBXZWJBdWRpbyBlbmdp
bmUgYW5kCisgICAgLy8gdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIGZyb20gdGhlIGFjdHVhbCBhdWRp
byBkZXZpY2UuCisgICAgVW5pcXVlUmVmPFB1c2hQdWxsRklGTz4gbV9maWZvOworCisgICAgc3Rk
Ojp1bmlxdWVfcHRyPE11bHRpQ2hhbm5lbFJlc2FtcGxlcj4gbV9yZXNhbXBsZXI7CisgICAgQXVk
aW9JT1Bvc2l0aW9uIG1fb3V0cHV0VGltZXN0YW1wOwogCi0gICAgdW5zaWduZWQgbV9zdGFydFNw
YXJlRnJhbWUgeyAwIH07Ci0gICAgdW5zaWduZWQgbV9lbmRTcGFyZUZyYW1lIHsgMCB9OworICAg
IGZsb2F0IG1fY29udGV4dFNhbXBsZVJhdGU7CisgICAgYm9vbCBtX2lzUGxheWluZyB7IGZhbHNl
IH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAKaW5kZXgg
MzkyOTUyMzZlMzAzZTBjMTg3MDVmZmJlZTU0NmI0ODhjNTJhYmVlNS4uYzQ3MzNkZTdmNzVkYTlh
YjZkMDg3YTIzMWFkOGViOTgxZGM2ODg4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcApAQCAtOTEsNyAr
OTEsNyBAQCB2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6Y29uZmlndXJlKCkKICAgICByZXN1
bHQgPSBBdWRpb1VuaXRHZXRQcm9wZXJ0eShvdXRwdXRVbml0KCksIGtBdWRpb1VuaXRQcm9wZXJ0
eV9TdHJlYW1Gb3JtYXQsIGtBdWRpb1VuaXRTY29wZV9PdXRwdXQsIDAsICh2b2lkKikmc3RyZWFt
Rm9ybWF0LCAmc2l6ZSk7CiAgICAgQVNTRVJUKCFyZXN1bHQpOwogCi0gICAgc2V0QXVkaW9TdHJl
YW1CYXNpY0Rlc2NyaXB0aW9uKHN0cmVhbUZvcm1hdCwgc2FtcGxlUmF0ZSgpKTsKKyAgICBzZXRB
dWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oc3RyZWFtRm9ybWF0KTsKIAogICAgIHJlc3VsdCA9
IEF1ZGlvVW5pdFNldFByb3BlcnR5KG91dHB1dFVuaXQoKSwga0F1ZGlvVW5pdFByb3BlcnR5X1N0
cmVhbUZvcm1hdCwga0F1ZGlvVW5pdFNjb3BlX0lucHV0LCAwLCAodm9pZCopJnN0cmVhbUZvcm1h
dCwgc2l6ZW9mKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbikpOwogICAgIEFTU0VSVCghcmVz
dWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRp
b0Rlc3RpbmF0aW9uTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9B
dWRpb0Rlc3RpbmF0aW9uTWFjLmNwcAppbmRleCA3YTAxZWFlMDZlMjkwMzJmZDA1OThhMDBlMzRk
ZTIzNTdkMmE1N2E0Li5mZjY5NDNiMzgwM2ExYjI1NTJiNThlYzI3MjUwMTQ1Y2Q4ZWE0OGEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5h
dGlvbk1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlv
RGVzdGluYXRpb25NYWMuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgQXVkaW9EZXN0aW5hdGlv
bkNvY29hOjpjb25maWd1cmUoKQogCiAgICAgLy8gU2V0IHN0cmVhbSBmb3JtYXQKICAgICBBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OwotICAgIHNldEF1ZGlvU3RyZWFt
QmFzaWNEZXNjcmlwdGlvbihzdHJlYW1Gb3JtYXQsIHNhbXBsZVJhdGUoKSk7CisgICAgc2V0QXVk
aW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKHN0cmVhbUZvcm1hdCk7CiAKICAgICByZXN1bHQgPSBB
dWRpb1VuaXRTZXRQcm9wZXJ0eShvdXRwdXRVbml0KCksIGtBdWRpb1VuaXRQcm9wZXJ0eV9TdHJl
YW1Gb3JtYXQsIGtBdWRpb1VuaXRTY29wZV9JbnB1dCwgMCwgKHZvaWQqKSZzdHJlYW1Gb3JtYXQs
IHNpemVvZihBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24pKTsKICAgICBBU1NFUlQoIXJlc3Vs
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tBdWRpb0Rl
c3RpbmF0aW9uQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrQXVk
aW9EZXN0aW5hdGlvbkNvY29hLmNwcAppbmRleCA4NjNjNGQ1NGJmOTc4ZDI4ZWI1MTEzNjcyNDAx
OGRkMTcxMzM0Y2QzLi44ZTNhZjAzNTM2YzJkM2I3NmI4NjM1NjhmODc0OTRiNWEzYzFmNGM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tBdWRpb0Rlc3RpbmF0
aW9uQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja0F1ZGlv
RGVzdGluYXRpb25Db2NvYS5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBNb2NrQXVkaW9EZXN0
aW5hdGlvbkNvY29hOjp0aWNrKCkKIHsKICAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMs
IHNhbXBsZVJhdGUgPSBzYW1wbGVSYXRlKCksIG51bWJlck9mRnJhbWVzVG9Qcm9jZXNzID0gbV9u
dW1iZXJPZkZyYW1lc1RvUHJvY2Vzc10gewogICAgICAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3Jp
cHRpb24gc3RyZWFtRm9ybWF0OwotICAgICAgICBzZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRp
b24oc3RyZWFtRm9ybWF0LCBzYW1wbGVSYXRlKTsKKyAgICAgICAgc2V0QXVkaW9TdHJlYW1CYXNp
Y0Rlc2NyaXB0aW9uKHN0cmVhbUZvcm1hdCk7CiAKICAgICAgICAgV2ViQXVkaW9CdWZmZXJMaXN0
IHdlYkF1ZGlvQnVmZmVyTGlzdCB7IHN0cmVhbUZvcm1hdCwgbnVtYmVyT2ZGcmFtZXNUb1Byb2Nl
c3MgfTsKICAgICAgICAgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjppbnB1dFByb2ModGhpcywgMCwg
MCwgMCwgbnVtYmVyT2ZGcmFtZXNUb1Byb2Nlc3MsIHdlYkF1ZGlvQnVmZmVyTGlzdC5saXN0KCkp
Owo=
</data>
<flag name="commit-queue"
          id="424016"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408577</attachid>
            <date>2020-09-11 18:27:34 -0700</date>
            <delta_ts>2020-09-11 18:55:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216425-20200911182733.patch</filename>
            <type>text/plain</type>
            <size>66314</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2OTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTk4OWVhNTIyNDI0MGRl
ZWVkYTdlYzgzNzVkNzMxMzY0MWQ0MWJkYS4uY2Y1ZWZhOTI4MzQxNjU1Nzg0OTQzYzc1NDcyZDk0
YzcwMmMwNGM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDIwLTA5LTExICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHByb3BlciBzdXBwb3J0
IGZvciBBdWRpb0NvbnRleHRPcHRpb25zLnNhbXBsZVJhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjQyNQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBwcm9wZXIgc3VwcG9ydCBmb3IgQXVkaW9D
b250ZXh0T3B0aW9ucy5zYW1wbGVSYXRlLiBQcmV2aW91c2x5LCBvdXIgQXVkaW9Db250ZXh0IGFs
d2F5cyBydW4KKyAgICAgICAgYXQgdGhlIGhhcmR3YXJlJ3Mgc2FtcGxlUmF0ZSwgbm8gbWF0dGVy
IHdoYXQgdmFsdWUgZm9yIHNldCBmb3IgQXVkaW9Db250ZXh0T3B0aW9ucy5zYW1wbGVSYXRlLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYmFzZWQgb24gdGhlIGZvbGxvd2luZyBDaHJvbWl1bSBj
aGFuZ2VzOgorICAgICAgICAtIGh0dHBzOi8vY2hyb21pdW0tcmV2aWV3Lmdvb2dsZXNvdXJjZS5j
b20vYy9jaHJvbWl1bS9zcmMvKy8xNDgyOTU3CisgICAgICAgIC0gaHR0cHM6Ly9jb2RlcmV2aWV3
LmNocm9taXVtLm9yZy8yNTQ5MDkzMDA5CisgICAgICAgIC0gaHR0cHM6Ly9jb2RlcmV2aWV3LmNo
cm9taXVtLm9yZy8xNDE4OTAzNQorCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0
QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVmYXVsdEF1ZGlv
RGVzdGluYXRpb25Ob2RlOjpjcmVhdGVEZXN0aW5hdGlvbik6CisgICAgICAgIFdoZW4gY3JlYXRp
bmcgYSBBdWRpb0Rlc3RpbmF0aW9uLCBwYXNzIHRoZSByZXF1ZXN0ZWQgQXVkaW9Db250ZXh0IHNh
bXBsZSByYXRlCisgICAgICAgIGluc3RlYWQgb2YgdGhlIGhhcmR3YXJlIHNhbXBsZSByYXRlLgor
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9GSUZPLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmg6IFJlbW92ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vUHVzaFB1bGxGSUZPLmNwcDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vUHVzaFB1bGxGSUZPLmg6IEFkZGVkLgorICAgICAgICBSZXBsYWNlIEF1ZGlv
RklGTyBhbmQgQXVkaW9QdWxsRklGTyB3aXRoIGEgbmV3IFB1c2hQdWxsRklGTyByZXBsYWNlbWVu
dCwgc2ltaWxhcmx5CisgICAgICAgIHRvIHdoYXQgd2FzIGRvbmUgaW4gQ2hyb21pdW0gaW46Cisg
ICAgICAgIC0gaHR0cHM6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8yNTQ5MDkzMDA5CisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TXVsdGlDaGFubmVsUmVzYW1wbGVyOjpNdWx0aUNoYW5uZWxSZXNhbXBsZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2luY1Jlc2FtcGxlcjo6U2luY1Jlc2FtcGxlcik6CisgICAgICAgIChXZWJDb3JlOjpTaW5j
UmVzYW1wbGVyOjp1cGRhdGVSZWdpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbmNSZXNhbXBs
ZXI6OmluaXRpYWxpemVLZXJuZWwpOgorICAgICAgICAoV2ViQ29yZTo6U2luY1Jlc2FtcGxlcjo6
cHJvY2Vzcyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5oOgorICAg
ICAgICBBZGQgcGFyYW1ldGVyIHRvIE11bHRpQ2hhbm5lbFJlc2FtcGxlciAmIFNpbmNSZXNhbXBs
ZXIgdG8gYWxsb3cgdGhlIGNsaWVudCB0byBzcGVjaWZ5CisgICAgICAgIHRoZSBzaXplIG9mIHRo
ZSBidWZmZXIgaW4gZnJhbWVzIHdoZW4gdGhlIHJlc2FtcGxlciBjYWxscyBBdWRpb1NvdXJjZVBy
b3ZpZGVyOjpwcm92aWRlSW5wdXQoKQorICAgICAgICB0byBnZXQgaW5wdXQgZGF0YS4gVGhpcyBp
cyBuZWNlc3NhcnkgYmVjYXVzZSBvdXIgV2ViQXVkaW8gaW1wbGVtZW50YXRpb24gdXNlcyBhIHN0
YXRpYworICAgICAgICBidWZmZXIgc2l6ZSBvZiAxMjggZnJhbWVzLiBUaGlzIGlzIHNpbWlsYXIg
dG8gd2hhdCB3YXMgZG9uZSBpbiBDaHJvbWl1bSBpbjoKKyAgICAgICAgLSBodHRwczovL2NvZGVy
ZXZpZXcuY2hyb21pdW0ub3JnLzE0MTg5MDM1CisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9E
ZXN0aW5hdGlvbkNvY29hOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2EpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpyZW5kZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpwcm92aWRlSW5wdXQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5oOgorICAg
ICAgICAtIEFkb3B0IFB1c2hQdWxsRklGTyB0byByZXNvbHZlIHRoZSBidWZmZXIgc2l6ZSBtaXNt
YXRjaCBiZXR3ZWVuIHRoZSBXZWJBdWRpbyBlbmdpbmUgYW5kCisgICAgICAgICAgdGhlIGNhbGxi
YWNrIGZ1bmN0aW9uIGZyb20gdGhlIGFjdHVhbCBhdWRpbyBkZXZpY2UsIHNpbWlsYXJseSB0byB3
aGF0IHdhcyBkb25lIGluIENocm9taXVtLgorICAgICAgICAtIFdoZW4gdGhlIGNvbnRleHQncyBz
YW1wbGUgcmF0ZSBkaWZmZXJzIGZyb20gdGhlIGhhcmR3YXJlIHNhbXBsZSByYXRlLCBpbnN0YW50
aWF0ZSBhCisgICAgICAgICAgTXVsdGlDaGFubmVsUmVzYW1wbGVyIGFuZCB1c2UgaW4gaW4gcmVu
ZGVyKCkgdG8gZG8gdGhlIHJlc2FtcGxpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9p
b3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3Rp
bmF0aW9uQ29jb2E6OmNvbmZpZ3VyZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1
ZGlvRGVzdGluYXRpb25NYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlv
bkNvY29hOjpjb25maWd1cmUpOgorICAgICAgICBEcm9wIHNhbXBsZVJhdGUgcGFyYW1ldGVyIGFz
IGl0IGlzIG5vIGxvbmdlciBuZWVkZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0F1ZGlvRGVz
dGluYXRpb25Db2NvYTo6dGljayk6CisKIDIwMjAtMDktMTEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBTZXJpYWxpemF0aW9uIHNob3VsZCBoYXZlIGV4Y2Vw
dGlvbiBjaGVja3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCBiMTU5ZTMyZjEx
YmE3OTRmMWZlMTA3NThkOTYwMGVlNmQwODk0MjhlLi40MjNkY2EzMGVkYjQ0MDQwYzE0ZTY5MzE4
NDFkMGYyM2EwOGVjZGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCkBAIC04Miwx
MCArODIsNyBAQCB2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6dW5pbml0aWFsaXpl
KCkKIAogdm9pZCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZURlc3RpbmF0aW9u
KCkKIHsKLSAgICBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUgPSBBdWRpb0Rlc3RpbmF0aW9uOjpo
YXJkd2FyZVNhbXBsZVJhdGUoKTsKLSAgICBMT0coV2ViQXVkaW8sICI+Pj4+IGhhcmR3YXJlU2Ft
cGxlUmF0ZSA9ICVmXG4iLCBoYXJkd2FyZVNhbXBsZVJhdGUpOwotCi0gICAgbV9kZXN0aW5hdGlv
biA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5tZWRpYVN0cmF0ZWd5KCkuY3JlYXRlQXVkaW9EZXN0
aW5hdGlvbigqdGhpcywgbV9pbnB1dERldmljZUlkLCBtX251bWJlck9mSW5wdXRDaGFubmVscywg
Y2hhbm5lbENvdW50KCksIGhhcmR3YXJlU2FtcGxlUmF0ZSk7CisgICAgbV9kZXN0aW5hdGlvbiA9
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5tZWRpYVN0cmF0ZWd5KCkuY3JlYXRlQXVkaW9EZXN0aW5h
dGlvbigqdGhpcywgbV9pbnB1dERldmljZUlkLCBtX251bWJlck9mSW5wdXRDaGFubmVscywgY2hh
bm5lbENvdW50KCksIG1fc2FtcGxlUmF0ZSk7CiB9CiAKIHZvaWQgRGVmYXVsdEF1ZGlvRGVzdGlu
YXRpb25Ob2RlOjplbmFibGVJbnB1dChjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CmluZGV4IDA4NzIxNjA2NjIwNmZlY2UwMWEwMGVlNWI0MzY1NDIyOWIyYWE5ZTQuLjMw
MjkxYjEyZTE3OGYzZDljMzE3MzI5NzkyZjI4Nzk4ZDdkNjc2YWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBA
IC0xNzg4LDkgKzE3ODgsNyBAQCBwbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rpb24uY3Bw
CiBwbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHAKIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5l
bC5jcHAKIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvRFNQS2VybmVsUHJvY2Vzc29yLmNwcAotcGxhdGZv
cm0vYXVkaW8vQXVkaW9GSUZPLmNwcAogcGxhdGZvcm0vYXVkaW8vQXVkaW9IYXJkd2FyZUxpc3Rl
bmVyLmNwcAotcGxhdGZvcm0vYXVkaW8vQXVkaW9QdWxsRklGTy5jcHAKIHBsYXRmb3JtL2F1ZGlv
L0F1ZGlvUmVzYW1wbGVyLmNwcAogcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXJLZXJuZWwu
Y3BwCiBwbGF0Zm9ybS9hdWRpby9BdWRpb1V0aWxpdGllcy5jcHAKQEAgLTE4MTQsNiArMTgxMiw3
IEBAIHBsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHAKIHBsYXRmb3JtL2F1
ZGlvL1Bhbm5lci5jcHAKIHBsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcAog
cGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAorcGxhdGZvcm0v
YXVkaW8vUHVzaFB1bGxGSUZPLmNwcAogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNwcAogcGxhdGZv
cm0vYXVkaW8vUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyLmNwcAogcGxhdGZvcm0vYXVkaW8vUmV2
ZXJiQ29udm9sdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDQ2MzdjZTQ4MmVkNDFjYzgyZTExNjQ3ZDZjY2NiNTA1ODZk
MGVlOTguLmJmMTdkNGY5MTVhODE2NzFiZjUxZGJkMGU4YTMxM2RlOTg1ZGZlMWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI1
MjYsNiArMjUyNiw3IEBACiAJCTgzQzU3OTVEMURBNUMzMDEwMDZGQUNBOCAvKiBTY3JvbGxUb09w
dGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgz
NTBDM0U3MURBNTlCNjIwMDM1NjQ0NiAvKiBTY3JvbGxUb09wdGlvbnMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4M0QzNUFFQzFDNzE4N0ZBMDBG
NzBENUEgLyogWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNEMzVBRUExQzcxODdFRDAwRjcwRDVBIC8qIFhN
TEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQuaCAqLzsgfTsKIAkJODNEMzVBRjIxQzcxOEQ5MDAwRjcw
RDVBIC8qIEpTWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNEMzVBRjAxQzcxOEQ4NDAwRjcwRDVBIC8qIEpT
WE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5oICovOyB9OworCQk4M0Q1MTFGNjI1MEMxQ0JGMDAy
RURDNTEgLyogUHVzaFB1bGxGSUZPLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4M0Q1MTFGNTI1MEMxQ0E4MDAyRURDNTEgLyogUHVzaFB1bGxGSUZPLmgg
Ki87IH07CiAJCTgzREI5RTBGMjREQTE5NDkwMDM3QjQ2OCAvKiBCaXF1YWRGaWx0ZXJUeXBlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0RCOUUwQzI0
REExOEI1MDAzN0I0NjggLyogQmlxdWFkRmlsdGVyVHlwZS5oICovOyB9OwogCQk4M0RCOUUxMDI0
REExOTU3MDAzN0I0NjggLyogQmlxdWFkRmlsdGVyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNEQjlFMEUyNERBMThCNjAwMzdCNDY4IC8q
IEJpcXVhZEZpbHRlck9wdGlvbnMuaCAqLzsgfTsKIAkJODNFMzU5QTIxQkIxMDMxRDAwMkNFQjk4
IC8qIEpTSFRNTFRpbWVFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4M0UzNTlBMDFCQjEwMzFEMDAyQ0VCOTggLyogSlNIVE1MVGltZUVsZW1l
bnQuaCAqLzsgfTsKQEAgLTEwNzA3LDYgKzEwNzA4LDggQEAKIAkJODNEMzVBRUIxQzcxODdFRDAw
RjcwRDVBIC8qIFhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4M0QzNUFFRjFDNzE4RDg0MDBGNzBENUEgLyogSlNYTUxIdHRwUmVxdWVzdEV2
ZW50VGFyZ2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTWE1M
SHR0cFJlcXVlc3RFdmVudFRhcmdldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTgzRDM1QUYwMUM3MThEODQwMEY3MEQ1QSAvKiBKU1hNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNYTUxIdHRwUmVxdWVzdEV2ZW50
VGFyZ2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzRDUxMUYzMjUwQzFDQTgw
MDJFREM1MSAvKiBQdXNoUHVsbEZJRk8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUHVzaFB1bGxGSUZPLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODNENTExRjUyNTBDMUNBODAwMkVEQzUxIC8qIFB1c2hQdWxsRklGTy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQdXNoUHVsbEZJRk8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODNEQjlFMEEyNERBMThCNDAwMzdCNDY4IC8qIEJpcXVhZEZpbHRlclR5cGUuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IEJpcXVhZEZpbHRlclR5cGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4M0RCOUUwQzI0REExOEI1MDAzN0I0NjggLyogQmlxdWFkRmlsdGVyVHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBCaXF1YWRGaWx0ZXJUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTgzREI5RTBEMjREQTE4QjUwMDM3QjQ2OCAvKiBCaXF1YWRGaWx0ZXJPcHRpb25zLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBCaXF1YWRGaWx0ZXJPcHRpb25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTMwMDMzLDYgKzMwMDM2LDggQEAKIAkJCQkwNzBFMDkxODE4NzVFRDkzMDAzQTFEM0MgLyogUGxh
dGZvcm1NZWRpYVNlc3Npb24uaCAqLywKIAkJCQlDREFFOEMwNzE3NDZCOTU3MDA1MzJENzggLyog
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCAqLywKIAkJCQlDREFFOEMwODE3NDZCOTU3
MDA1MzJENzggLyogUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmggKi8sCisJCQkJODNENTEx
RjMyNTBDMUNBODAwMkVEQzUxIC8qIFB1c2hQdWxsRklGTy5jcHAgKi8sCisJCQkJODNENTExRjUy
NTBDMUNBODAwMkVEQzUxIC8qIFB1c2hQdWxsRklGTy5oICovLAogCQkJCUZEMzE2MDZFMTJCMDI2
RjcwMEMxQTM1OSAvKiBSZXZlcmIuY3BwICovLAogCQkJCUZEMzE2MDZGMTJCMDI2RjcwMEMxQTM1
OSAvKiBSZXZlcmIuaCAqLywKIAkJCQlGRDMxNjA3MDEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJi
QWNjdW11bGF0aW9uQnVmZmVyLmNwcCAqLywKQEAgLTMzMjY1LDYgKzMzMjcwLDcgQEAKIAkJCQk1
NzMwM0JFQjIwMDk3RjQwMDAzNTU5NjUgLyogUHVibGljS2V5Q3JlZGVudGlhbFR5cGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTAwODFGRjAwMTZCMEEyRDMwMDhBQUE3QSAvKiBQdWJsaWNTdWZmaXgu
aCBpbiBIZWFkZXJzICovLAogCQkJCTEwRkIwODRCMTRFMTVDN0UwMEEzREI5OCAvKiBQdWJsaWNV
UkxNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk4M0Q1MTFGNjI1MEMxQ0JGMDAyRURDNTEg
LyogUHVzaFB1bGxGSUZPLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NTBBMEJDQTA4NUY2MDM5MDA3
MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNDMUY1OTQxRURG
NjlEMzAwNDEwRDI3IC8qIFF1YWxpZmllZE5hbWVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTE1RTMxRjQxRTBDQjBCNTAwNEIzNzFDIC8qIFF1aWNrTG9vay5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9GSUZPLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMGIzYWE0OTlmNjk4YmI0NDM3ZGJiOTZkZDcyMTU1MGJhMmNjNWZl
Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
MTQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1l
IG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0g
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShXRUJfQVVESU8pCi0KLSNpbmNs
dWRlICJBdWRpb0ZJRk8uaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1BdWRpb0ZJRk86OkF1
ZGlvRklGTyh1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgZmlmb0xlbmd0aCkKLSAg
ICA6IG1fZmlmb0F1ZGlvQnVzKEF1ZGlvQnVzOjpjcmVhdGUobnVtYmVyT2ZDaGFubmVscywgZmlm
b0xlbmd0aCkpCi0gICAgLCBtX2ZpZm9MZW5ndGgoZmlmb0xlbmd0aCkKLSAgICAsIG1fZnJhbWVz
SW5GaWZvKDApCi0gICAgLCBtX3JlYWRJbmRleCgwKQotICAgICwgbV93cml0ZUluZGV4KDApCi17
Ci19Ci0KLXZvaWQgQXVkaW9GSUZPOjpjb25zdW1lKEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwgc2l6
ZV90IGZyYW1lc1RvQ29uc3VtZSkKLXsKLSAgICBib29sIGlzR29vZCA9IGRlc3RpbmF0aW9uICYm
IChmcmFtZXNUb0NvbnN1bWUgPD0gbV9maWZvTGVuZ3RoKSAmJiAoZnJhbWVzVG9Db25zdW1lIDw9
IG1fZnJhbWVzSW5GaWZvKSAmJiAoZGVzdGluYXRpb24tPmxlbmd0aCgpID49IGZyYW1lc1RvQ29u
c3VtZSk7Ci0gICAgQVNTRVJUKGlzR29vZCk7Ci0gICAgaWYgKCFpc0dvb2QpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIC8vIENvcHkgdGhlIHJlcXVlc3RlZCBudW1iZXIgb2Ygc2FtcGxlcyB0byB0
aGUgZGVzdGluYXRpb24uCi0KLSAgICBzaXplX3QgcGFydDFMZW5ndGg7Ci0gICAgc2l6ZV90IHBh
cnQyTGVuZ3RoOwotICAgIGZpbmRXcmFwTGVuZ3RocyhtX3JlYWRJbmRleCwgZnJhbWVzVG9Db25z
dW1lLCBwYXJ0MUxlbmd0aCwgcGFydDJMZW5ndGgpOwotCi0gICAgc2l6ZV90IG51bWJlck9mQ2hh
bm5lbHMgPSBtX2ZpZm9BdWRpb0J1cy0+bnVtYmVyT2ZDaGFubmVscygpOwotCi0gICAgZm9yIChz
aXplX3QgY2hhbm5lbEluZGV4ID0gMDsgY2hhbm5lbEluZGV4IDwgbnVtYmVyT2ZDaGFubmVsczsg
KytjaGFubmVsSW5kZXgpIHsKLSAgICAgICAgZmxvYXQqIGRlc3RpbmF0aW9uRGF0YSA9IGRlc3Rp
bmF0aW9uLT5jaGFubmVsKGNoYW5uZWxJbmRleCktPm11dGFibGVEYXRhKCk7Ci0gICAgICAgIGNv
bnN0IGZsb2F0KiBzb3VyY2VEYXRhID0gbV9maWZvQXVkaW9CdXMtPmNoYW5uZWwoY2hhbm5lbElu
ZGV4KS0+ZGF0YSgpOwotCi0gICAgICAgIGJvb2wgaXNDb3B5R29vZCA9ICgobV9yZWFkSW5kZXgg
PCBtX2ZpZm9MZW5ndGgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAobV9yZWFkSW5k
ZXggKyBwYXJ0MUxlbmd0aCkgPD0gbV9maWZvTGVuZ3RoCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAmJiAocGFydDFMZW5ndGggPD0gZGVzdGluYXRpb24tPmxlbmd0aCgpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJiYgKHBhcnQxTGVuZ3RoICsgcGFydDJMZW5ndGgpIDw9IGRlc3Rp
bmF0aW9uLT5sZW5ndGgoKSk7Ci0gICAgICAgIEFTU0VSVChpc0NvcHlHb29kKTsKLSAgICAgICAg
aWYgKCFpc0NvcHlHb29kKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1lbWNweShk
ZXN0aW5hdGlvbkRhdGEsIHNvdXJjZURhdGEgKyBtX3JlYWRJbmRleCwgcGFydDFMZW5ndGggKiBz
aXplb2YoKnNvdXJjZURhdGEpKTsKLSAgICAgICAgLy8gSGFuZGxlIHdyYXAgYXJvdW5kIG9mIHRo
ZSBGSUZPLCBpZiBuZWVkZWQuCi0gICAgICAgIGlmIChwYXJ0Mkxlbmd0aCkKLSAgICAgICAgICAg
IG1lbWNweShkZXN0aW5hdGlvbkRhdGEgKyBwYXJ0MUxlbmd0aCwgc291cmNlRGF0YSwgcGFydDJM
ZW5ndGggKiBzaXplb2YoKnNvdXJjZURhdGEpKTsKLSAgICB9Ci0gICAgbV9yZWFkSW5kZXggPSB1
cGRhdGVJbmRleChtX3JlYWRJbmRleCwgZnJhbWVzVG9Db25zdW1lKTsKLSAgICBBU1NFUlQobV9m
cmFtZXNJbkZpZm8gPj0gZnJhbWVzVG9Db25zdW1lKTsKLSAgICBtX2ZyYW1lc0luRmlmbyAtPSBm
cmFtZXNUb0NvbnN1bWU7Ci19Ci0KLXZvaWQgQXVkaW9GSUZPOjpwdXNoKGNvbnN0IEF1ZGlvQnVz
KiBzb3VyY2VCdXMpCi17Ci0gICAgLy8gQ29weSB0aGUgc291cmNlQnVzIGludG8gdGhlIEZJRk8g
YnVmZmVyLgotCi0gICAgYm9vbCBpc0dvb2QgPSBzb3VyY2VCdXMgJiYgKG1fZnJhbWVzSW5GaWZv
ICsgc291cmNlQnVzLT5sZW5ndGgoKSA8PSBtX2ZpZm9MZW5ndGgpOwotICAgIGlmICghaXNHb29k
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBzaXplX3Qgc291cmNlTGVuZ3RoID0gc291cmNlQnVz
LT5sZW5ndGgoKTsKLSAgICBzaXplX3QgcGFydDFMZW5ndGg7Ci0gICAgc2l6ZV90IHBhcnQyTGVu
Z3RoOwotICAgIGZpbmRXcmFwTGVuZ3RocyhtX3dyaXRlSW5kZXgsIHNvdXJjZUxlbmd0aCwgcGFy
dDFMZW5ndGgsIHBhcnQyTGVuZ3RoKTsKLQotICAgIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzID0g
bV9maWZvQXVkaW9CdXMtPm51bWJlck9mQ2hhbm5lbHMoKTsKLQotICAgIGZvciAoc2l6ZV90IGNo
YW5uZWxJbmRleCA9IDA7IGNoYW5uZWxJbmRleCA8IG51bWJlck9mQ2hhbm5lbHM7ICsrY2hhbm5l
bEluZGV4KSB7Ci0gICAgICAgIGZsb2F0KiBkZXN0aW5hdGlvbiA9IG1fZmlmb0F1ZGlvQnVzLT5j
aGFubmVsKGNoYW5uZWxJbmRleCktPm11dGFibGVEYXRhKCk7Ci0gICAgICAgIGNvbnN0IGZsb2F0
KiBzb3VyY2UgPSBzb3VyY2VCdXMtPmNoYW5uZWwoY2hhbm5lbEluZGV4KS0+ZGF0YSgpOwotCi0g
ICAgICAgIGJvb2wgaXNDb3B5R29vZCA9ICgobV93cml0ZUluZGV4IDwgbV9maWZvTGVuZ3RoKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKG1fd3JpdGVJbmRleCArIHBhcnQxTGVuZ3Ro
KSA8PSBtX2ZpZm9MZW5ndGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHBhcnQyTGVu
Z3RoIDwgbV9maWZvTGVuZ3RoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBwYXJ0MUxl
bmd0aCArIHBhcnQyTGVuZ3RoIDw9IHNvdXJjZUxlbmd0aCk7Ci0gICAgICAgIEFTU0VSVChpc0Nv
cHlHb29kKTsKLSAgICAgICAgaWYgKCFpc0NvcHlHb29kKQotICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgIG1lbWNweShkZXN0aW5hdGlvbiArIG1fd3JpdGVJbmRleCwgc291cmNlLCBwYXJ0
MUxlbmd0aCAqIHNpemVvZigqZGVzdGluYXRpb24pKTsKLQotICAgICAgICAvLyBIYW5kbGUgd3Jh
cCBhcm91bmQgb2YgdGhlIEZJRk8sIGlmIG5lZWRlZC4KLSAgICAgICAgaWYgKHBhcnQyTGVuZ3Ro
KQotICAgICAgICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uLCBzb3VyY2UgKyBwYXJ0MUxlbmd0aCwg
cGFydDJMZW5ndGggKiBzaXplb2YoKmRlc3RpbmF0aW9uKSk7Ci0gICAgfQotICAgICAgICAKLSAg
ICBtX2ZyYW1lc0luRmlmbyArPSBzb3VyY2VMZW5ndGg7Ci0gICAgQVNTRVJUKG1fZnJhbWVzSW5G
aWZvIDw9IG1fZmlmb0xlbmd0aCk7Ci0gICAgbV93cml0ZUluZGV4ID0gdXBkYXRlSW5kZXgobV93
cml0ZUluZGV4LCBzb3VyY2VMZW5ndGgpOwotfQotCi12b2lkIEF1ZGlvRklGTzo6ZmluZFdyYXBM
ZW5ndGhzKHNpemVfdCBpbmRleCwgc2l6ZV90IHNpemUsIHNpemVfdCYgcGFydDFMZW5ndGgsIHNp
emVfdCYgcGFydDJMZW5ndGgpCi17Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJ
T04oaW5kZXggPCBtX2ZpZm9MZW5ndGggJiYgc2l6ZSA8PSBtX2ZpZm9MZW5ndGgpOwotICAgIGlm
IChpbmRleCA8IG1fZmlmb0xlbmd0aCAmJiBzaXplIDw9IG1fZmlmb0xlbmd0aCkgewotICAgICAg
ICBpZiAoaW5kZXggKyBzaXplID4gbV9maWZvTGVuZ3RoKSB7Ci0gICAgICAgICAgICAvLyBOZWVk
IHRvIHdyYXAuIEZpZ3VyZSBvdXQgdGhlIGxlbmd0aCBvZiBlYWNoIHBpZWNlLgotICAgICAgICAg
ICAgcGFydDFMZW5ndGggPSBtX2ZpZm9MZW5ndGggLSBpbmRleDsKLSAgICAgICAgICAgIHBhcnQy
TGVuZ3RoID0gc2l6ZSAtIHBhcnQxTGVuZ3RoOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgLy8gTm8gd3JhcCBuZWVkZWQuCi0gICAgICAgICAgICBwYXJ0MUxlbmd0aCA9IHNpemU7Ci0g
ICAgICAgICAgICBwYXJ0Mkxlbmd0aCA9IDA7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAg
ICAgICAvLyBJbnZhbGlkIHZhbHVlcyBmb3IgaW5kZXggb3Igc2l6ZS4gU2V0IHRoZSBwYXJ0IGxl
bmd0aHMgdG8gemVybyBzbyBub3RoaW5nIGlzIGNvcGllZC4KLSAgICAgICAgcGFydDFMZW5ndGgg
PSAwOwotICAgICAgICBwYXJ0Mkxlbmd0aCA9IDA7Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9GSUZPLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MGY0MzhkZDdkMGZhNTlmYjY0NGQ0ZGY1NzJmNTU5ZmQ2NjMwOGJkMy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb0ZJRk8uaAorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgQXVkaW9GSUZP
X2gKLSNkZWZpbmUgQXVkaW9GSUZPX2gKLQotI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQXVkaW9GSUZPIGZpbmFsIHsKLSAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICAvLyBDcmVhdGUgYSBGSUZPIGxhcmdlIGVub3Vn
aCB0byBob2xkIHxmaWZvTGVuZ3RofCBmcmFtZXMgb2YgZGF0YSBvZiB8bnVtYmVyT2ZDaGFubmVs
c3wgY2hhbm5lbHMuCi0gICAgQXVkaW9GSUZPKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNp
emVfdCBmaWZvTGVuZ3RoKTsKLQotICAgIC8vIFB1c2ggdGhlIGRhdGEgZnJvbSB0aGUgYnVzIGlu
dG8gdGhlIEZJRk8uCi0gICAgdm9pZCBwdXNoKGNvbnN0IEF1ZGlvQnVzKik7Ci0KLSAgICAvLyBD
b25zdW1lIHxmcmFtZXNUb0NvbnN1bWV8IGZyYW1lcyBvZiBkYXRhIGZyb20gdGhlIEZJRk8gYW5k
IHB1dCB0aGVtIGluIHxkZXN0aW5hdGlvbnwuIFRoZQotICAgIC8vIGNvcnJlc3BvbmRpbmcgZnJh
bWVzIGFyZSByZW1vdmVkIGZyb20gdGhlIEZJRk8uCi0gICAgdm9pZCBjb25zdW1lKEF1ZGlvQnVz
KiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1RvQ29uc3VtZSk7Ci0KLSAgICAvLyBOdW1iZXIg
b2YgZnJhbWVzIG9mIGRhdGEgdGhhdCBhcmUgY3VycmVudGx5IGluIHRoZSBGSUZPLgotICAgIHNp
emVfdCBmcmFtZXNJbkZpZm8oKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lc0luRmlmbzsgfQotCi1w
cml2YXRlOgotICAgIC8vIFVwZGF0ZSB0aGUgRklGTyBpbmRleCBieSB0aGUgc3RlcCwgd2l0aCBh
cHByb3ByaWF0ZSB3cmFwcGluZyBhcm91bmQgdGhlIGVuZHBvaW50LgotICAgIGludCB1cGRhdGVJ
bmRleChpbnQgaW5kZXgsIGludCBzdGVwKSB7IHJldHVybiAoaW5kZXggKyBzdGVwKSAlIG1fZmlm
b0xlbmd0aDsgfQotCi0gICAgdm9pZCBmaW5kV3JhcExlbmd0aHMoc2l6ZV90IGluZGV4LCBzaXpl
X3QgcHJvdmlkZXJTaXplLCBzaXplX3QmIHBhcnQxTGVuZ3RoLCBzaXplX3QmIHBhcnQyTGVuZ3Ro
KTsKLSAgICAKLSAgICAvLyBUaGUgRklGTyBpdHNlbGYuIEluIHJlYWxpdHksIHRoZSBGSUZPIGlz
IGEgY2lyY3VsYXIgYnVmZmVyLgotICAgIFJlZlB0cjxBdWRpb0J1cz4gbV9maWZvQXVkaW9CdXM7
Ci0KLSAgICAvLyBUaGUgdG90YWwgYXZhaWxhYmxlIHNwYWNlIGluIHRoZSBGSUZPLgotICAgIHNp
emVfdCBtX2ZpZm9MZW5ndGg7Ci0KLSAgICAvLyBUaGUgbnVtYmVyIG9mIGFjdHVhbCBlbGVtZW50
cyBpbiB0aGUgRklGTwotICAgIHNpemVfdCBtX2ZyYW1lc0luRmlmbzsKLQotICAgIC8vIFdoZXJl
IHRvIHN0YXJ0IHJlYWRpbmcgZnJvbSB0aGUgRklGTy4KLSAgICBzaXplX3QgbV9yZWFkSW5kZXg7
Ci0KLSAgICAvLyBXaGVyZSB0byBzdGFydCB3cml0aW5nIHRvIHRoZSBGSUZPLgotICAgIHNpemVf
dCBtX3dyaXRlSW5kZXg7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBBdWRpb0ZJRk8uaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9QdWxsRklGTy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1B1
bGxGSUZPLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmIxYTYyMjI2YjlmODE3
MmI3ZmM2MGRjMjIwMjA0NjA1OWIzNTg3YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxG
SUZPLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0
aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lm
IEVOQUJMRShXRUJfQVVESU8pCi0KLSNpbmNsdWRlICJBdWRpb1B1bGxGSUZPLmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotQXVkaW9QdWxsRklGTzo6QXVkaW9QdWxsRklGTyhBdWRpb1NvdXJj
ZVByb3ZpZGVyJiBhdWRpb1Byb3ZpZGVyLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXpl
X3QgZmlmb0xlbmd0aCwgc2l6ZV90IHByb3ZpZGVyU2l6ZSkKLSAgICA6IG1fcHJvdmlkZXIoYXVk
aW9Qcm92aWRlcikKLSAgICAsIG1fZmlmbyhudW1iZXJPZkNoYW5uZWxzLCBmaWZvTGVuZ3RoKQot
ICAgICwgbV9wcm92aWRlclNpemUocHJvdmlkZXJTaXplKQotICAgICwgbV90ZW1wQnVzKEF1ZGlv
QnVzOjpjcmVhdGUobnVtYmVyT2ZDaGFubmVscywgcHJvdmlkZXJTaXplKSkKLXsKLX0KLQotdm9p
ZCBBdWRpb1B1bGxGSUZPOjpjb25zdW1lKEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZy
YW1lc1RvQ29uc3VtZSkKLXsKLSAgICBpZiAoIWRlc3RpbmF0aW9uKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBpZiAoZnJhbWVzVG9Db25zdW1lID4gbV9maWZvLmZyYW1lc0luRmlmbygpKSB7Ci0g
ICAgICAgIC8vIFdlIGRvbid0IGhhdmUgZW5vdWdoIGRhdGEgaW4gdGhlIEZJRk8gdG8gZnVsZmls
bCB0aGUgcmVxdWVzdC4gQXNrIGZvciBtb3JlIGRhdGEuCi0gICAgICAgIGZpbGxCdWZmZXIoZnJh
bWVzVG9Db25zdW1lIC0gbV9maWZvLmZyYW1lc0luRmlmbygpKTsKLSAgICB9Ci0KLSAgICBtX2Zp
Zm8uY29uc3VtZShkZXN0aW5hdGlvbiwgZnJhbWVzVG9Db25zdW1lKTsKLX0KLQotdm9pZCBBdWRp
b1B1bGxGSUZPOjpmaWxsQnVmZmVyKHNpemVfdCBudW1iZXJPZkZyYW1lcykKLXsKLSAgICAvLyBL
ZWVwIGFza2luZyB0aGUgcHJvdmlkZXIgdG8gZ2l2ZSB1cyBkYXRhIHVudGlsIHdlIGhhdmUgcmVj
ZWl2ZWQgYXQgbGVhc3QgfG51bWJlck9mRnJhbWVzfCBvZgotICAgIC8vIGRhdGEuIFN0dWZmIHRo
ZSBkYXRhIGludG8gdGhlIEZJRk8uCi0gICAgc2l6ZV90IGZyYW1lc1Byb3ZpZGVkID0gMDsKLQot
ICAgIHdoaWxlIChmcmFtZXNQcm92aWRlZCA8IG51bWJlck9mRnJhbWVzKSB7Ci0gICAgICAgIG1f
cHJvdmlkZXIucHJvdmlkZUlucHV0KG1fdGVtcEJ1cy5nZXQoKSwgbV9wcm92aWRlclNpemUpOwot
Ci0gICAgICAgIG1fZmlmby5wdXNoKG1fdGVtcEJ1cy5nZXQoKSk7Ci0KLSAgICAgICAgZnJhbWVz
UHJvdmlkZWQgKz0gbV9wcm92aWRlclNpemU7Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9QdWxsRklGTy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9QdWxsRklGTy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBkNzQ4ZmE0MTM4NzM3OWRiMzk1YmVhZTY1Zjg4MmJhMjU4ZTlmYzI2Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0F1ZGlvUHVsbEZJRk8uaAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIElu
Yy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYg
QXVkaW9QdWxsRklGT19oCi0jZGVmaW5lIEF1ZGlvUHVsbEZJRk9faAotCi0jaW5jbHVkZSAiQXVk
aW9CdXMuaCIKLSNpbmNsdWRlICJBdWRpb0ZJRk8uaCIKLSNpbmNsdWRlICJBdWRpb1NvdXJjZVBy
b3ZpZGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gQSBGSUZPIChGaXJzdCBJbiBG
aXJzdCBPdXQpIGJ1ZmZlciB0byBoYW5kbGUgbWlzbWF0Y2hlcyBpbiBidWZmZXIgc2l6ZXMgYmV0
d2VlbiBhIHByb3ZpZGVyIGFuZAotLy8gcmVjZWl2ZXIuIFRoZSByZWNlaXZlciB3aWxsICJwdWxs
IiBkYXRhIGZyb20gdGhpcyBGSUZPLiBJZiBkYXRhIGlzIGFscmVhZHkgYXZhaWxhYmxlIGluIHRo
ZQotLy8gRklGTywgaXQgaXMgcHJvdmlkZWQgdG8gdGhlIHJlY2VpdmVyLiBJZiBpbnN1ZmZpY2ll
bnQgZGF0YSBpcyBhdmFpbGFibGUgdG8gc2F0aXNmeSB0aGUgcmVxdWVzdCwKLS8vIHRoZSBGSUZP
IHdpbGwgYXNrIHRoZSBwcm92aWRlciBmb3IgbW9yZSBkYXRhIHdoZW4gbmVjZXNzYXJ5IHRvIGZ1
bGZpbGwgYSByZXF1ZXN0LiBDb250cmFzdCB0aGlzCi0vLyB3aXRoIGEgInB1c2giIEZJRk8sIHdo
ZXJlIHRoZSBzZW5kZXIgcHVzaGVzIGRhdGEgdG8gdGhlIEZJRk8gd2hpY2ggd2lsbCBpdHNlbGYg
cHVzaCB0aGUgZGF0YSB0bwotLy8gdGhlIHJlY2VpdmVyIHdoZW4gdGhlIEZJRk8gaXMgZnVsbC4K
LWNsYXNzIEF1ZGlvUHVsbEZJRk8gZmluYWwgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwotcHVibGljOgotICAgIC8vIENyZWF0ZSBhIEZJRk8gdGhhdCBnZXRzIGRhdGEgZnJvbSB8cHJv
dmlkZXJ8LiBUaGUgRklGTyB3aWxsIGJlIGxhcmdlIGVub3VnaCB0byBob2xkCi0gICAgLy8gfGZp
Zm9MZW5ndGh8IGZyYW1lcyBvZiBkYXRhIG9mIHxudW1iZXJPZkNoYW5uZWxzfCBjaGFubmVscy4g
VGhlIEF1ZGlvU291cmNlUHJvdmlkZXIgd2lsbCBiZQotICAgIC8vIGFza2VkIHRvIHByb2R1Y2Ug
fHByb3ZpZGVyU2l6ZXwgZnJhbWVzIHdoZW4gdGhlIEZJRk8gbmVlZHMgbW9yZSBkYXRhLgotICAg
IEF1ZGlvUHVsbEZJRk8oQXVkaW9Tb3VyY2VQcm92aWRlciYgYXVkaW9Qcm92aWRlciwgdW5zaWdu
ZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IGZpZm9MZW5ndGgsIHNpemVfdCBwcm92aWRlclNp
emUpOwotCi0gICAgLy8gUmVhZCB8ZnJhbWVzVG9Db25zdW1lfCBmcmFtZXMgZnJvbSB0aGUgRklG
TyBpbnRvIHRoZSBkZXN0aW5hdGlvbi4gSWYgdGhlIEZJRk8gZG9lcyBub3QgaGF2ZQotICAgIC8v
IGVub3VnaCBkYXRhLCB3ZSBhc2sgdGhlIHxwcm92aWRlcnwgdG8gZ2V0IG1vcmUgZGF0YSB0byBm
dWxmaWxsIHRoZSByZXF1ZXN0LgotICAgIHZvaWQgY29uc3VtZShBdWRpb0J1cyogZGVzdGluYXRp
b24sIHNpemVfdCBmcmFtZXNUb0NvbnN1bWUpOwotCi1wcml2YXRlOgotICAgIC8vIEZpbGwgdGhl
IEZJRk8gYnVmZmVyIHdpdGggYXQgbGVhc3QgfG51bWJlck9mRnJhbWVzfCBtb3JlIGRhdGEuCi0g
ICAgdm9pZCBmaWxsQnVmZmVyKHNpemVfdCBudW1iZXJPZkZyYW1lcyk7Ci0KLSAgICAvLyBUaGUg
cHJvdmlkZXIgb2YgdGhlIGRhdGEgaW4gb3VyIEZJRk8uCi0gICAgQXVkaW9Tb3VyY2VQcm92aWRl
ciYgbV9wcm92aWRlcjsKLQotICAgIC8vIFRoZSBhY3R1YWwgRklGTwotICAgIEF1ZGlvRklGTyBt
X2ZpZm87Ci0KLSAgICAvLyBOdW1iZXIgb2YgZnJhbWVzIG9mIGRhdGEgdGhhdCB0aGUgcHJvdmlk
ZXIgd2lsbCBwcm9kdWNlIHBlciBjYWxsLgotICAgIHVuc2lnbmVkIGludCBtX3Byb3ZpZGVyU2l6
ZTsKLQotICAgIC8vIFRlbXBvcmFyeSB3b3Jrc3BhY2UgdG8gaG9sZCB0aGUgZGF0YSBmcm9tIHRo
ZSBwcm92aWRlci4KLSAgICBSZWZQdHI8QXVkaW9CdXM+IG1fdGVtcEJ1czsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEF1ZGlvUHVsbEZJRk8uaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5j
cHAKaW5kZXggNWU2MjY4ZDNiYjEzYjVmMjcxZDJlNmE4OTYwMjgwZTc1M2I5ZGE0ZC4uODRlZmFi
MTYzMWIxYTY2Y2Y2NTE5YzFhMmI2M2U5NjljMjZkZWYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuY3BwCkBAIC05
MiwxMyArOTIsMTMgQEAgcHJpdmF0ZToKICAgICBzaXplX3QgbV9mcmFtZXNUb1Byb2Nlc3MgeyAw
IH07IC8vIFVzZWQgdG8gdmVyaWZ5IHRoYXQgYWxsIGNoYW5uZWxzIGFzayBmb3IgdGhlIHNhbWUg
YW1vdW50LgogfTsKIAotTXVsdGlDaGFubmVsUmVzYW1wbGVyOjpNdWx0aUNoYW5uZWxSZXNhbXBs
ZXIoZG91YmxlIHNjYWxlRmFjdG9yLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKQorTXVsdGlD
aGFubmVsUmVzYW1wbGVyOjpNdWx0aUNoYW5uZWxSZXNhbXBsZXIoZG91YmxlIHNjYWxlRmFjdG9y
LCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBPcHRpb25hbDx1bnNpZ25lZD4gcmVxdWVzdEZy
YW1lcykKICAgICA6IG1fbnVtYmVyT2ZDaGFubmVscyhudW1iZXJPZkNoYW5uZWxzKQogICAgICwg
bV9jaGFubmVsUHJvdmlkZXIobWFrZVVuaXF1ZTxDaGFubmVsUHJvdmlkZXI+KG1fbnVtYmVyT2ZD
aGFubmVscykpCiB7CiAgICAgLy8gQ3JlYXRlIGVhY2ggY2hhbm5lbCdzIHJlc2FtcGxlci4KICAg
ICBmb3IgKHVuc2lnbmVkIGNoYW5uZWxJbmRleCA9IDA7IGNoYW5uZWxJbmRleCA8IG51bWJlck9m
Q2hhbm5lbHM7ICsrY2hhbm5lbEluZGV4KQotICAgICAgICBtX2tlcm5lbHMuYXBwZW5kKG1ha2VV
bmlxdWU8U2luY1Jlc2FtcGxlcj4oc2NhbGVGYWN0b3IpKTsKKyAgICAgICAgbV9rZXJuZWxzLmFw
cGVuZChtYWtlVW5pcXVlPFNpbmNSZXNhbXBsZXI+KHNjYWxlRmFjdG9yLCByZXF1ZXN0RnJhbWVz
KSk7CiB9CiAKIE11bHRpQ2hhbm5lbFJlc2FtcGxlcjo6fk11bHRpQ2hhbm5lbFJlc2FtcGxlcigp
ID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011
bHRpQ2hhbm5lbFJlc2FtcGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVs
dGlDaGFubmVsUmVzYW1wbGVyLmgKaW5kZXggYWM4MWJlYzRiZTBiNDBkMjg0MTc2OWFlOGFjYTA3
MTg2OGJhYjBjZi4uNzE2YmM2MDFlODc4ZTNmNzRmNzRlYTM0ZGNiZDFjNzk4YzRkZGNhOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1w
bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVz
YW1wbGVyLmgKQEAgLTQwLDcgKzQwLDggQEAgY2xhc3MgQXVkaW9CdXM7CiBjbGFzcyBNdWx0aUNo
YW5uZWxSZXNhbXBsZXIgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOiAgIAotICAgIGV4cGxpY2l0IE11bHRpQ2hhbm5lbFJlc2FtcGxlcihkb3VibGUgc2NhbGVG
YWN0b3IsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMpOworICAgIC8vIHJlcXVlc3RGcmFtZXMg
Y29uc3Ryb2xzIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgaW4gZnJhbWVzIHdoZW4gQXVkaW9Tb3Vy
Y2VQcm92aWRlcjo6cHJvdmlkZUlucHV0KCkgaXMgY2FsbGVkLgorICAgIGV4cGxpY2l0IE11bHRp
Q2hhbm5lbFJlc2FtcGxlcihkb3VibGUgc2NhbGVGYWN0b3IsIHVuc2lnbmVkIG51bWJlck9mQ2hh
bm5lbHMsIE9wdGlvbmFsPHVuc2lnbmVkPiByZXF1ZXN0RnJhbWVzID0gV1RGOjpudWxsb3B0KTsK
ICAgICB+TXVsdGlDaGFubmVsUmVzYW1wbGVyKCk7CiAKICAgICAvLyBQcm9jZXNzIGdpdmVuIEF1
ZGlvU291cmNlUHJvdmlkZXIgZm9yIHN0cmVhbWluZyBhcHBsaWNhdGlvbnMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QdXNoUHVsbEZJRk8uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUHVzaFB1bGxGSUZPLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjg3
ZThjZmE0ZDNjNDhhNTE1Yjk1ZjhhZDY0ODU2OTFlM2FiOGI2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUHVzaFB1bGxGSUZPLmNwcApAQCAtMCwwICsx
LDEyOSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE3IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlB1c2hQdWxsRklGTy5oIgorCisjaW5jbHVkZSAiQXVkaW9CdXMuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjb25zdCBzaXplX3QgUHVzaFB1bGxGSUZPOjprTWF4RklGT0xlbmd0aCA9IDY1
NTM2OworCitQdXNoUHVsbEZJRk86OlB1c2hQdWxsRklGTyh1bnNpZ25lZCBudW1iZXJPZkNoYW5u
ZWxzLCBzaXplX3QgZmlmb0xlbmd0aCkKKyAgICA6IG1fZmlmb0xlbmd0aChmaWZvTGVuZ3RoKQor
eworICAgIEFTU0VSVChtX2ZpZm9MZW5ndGggPD0ga01heEZJRk9MZW5ndGgpOworICAgIG1fZmlm
b0J1cyA9IEF1ZGlvQnVzOjpjcmVhdGUobnVtYmVyT2ZDaGFubmVscywgbV9maWZvTGVuZ3RoKTsK
K30KKworUHVzaFB1bGxGSUZPOjp+UHVzaFB1bGxGSUZPKCkgPSBkZWZhdWx0OworCisvLyBQdXNo
IHRoZSBkYXRhIGZyb20gfGlucHV0QnVzfCB0byBGSUZPLiBUaGUgc2l6ZSBvZiBwdXNoIGlzIGRl
dGVybWluZWQgYnkKKy8vIHRoZSBsZW5ndGggb2YgfGlucHV0QnVzfC4KK3ZvaWQgUHVzaFB1bGxG
SUZPOjpwdXNoKGNvbnN0IEF1ZGlvQnVzKiBpbnB1dEJ1cykKK3sKKyAgICBBU1NFUlQoaW5wdXRC
dXMpOworICAgIEFTU0VSVChpbnB1dEJ1cy0+bGVuZ3RoKCkgPD0gbV9maWZvTGVuZ3RoKTsKKyAg
ICBBU1NFUlQobV9pbmRleFdyaXRlIDwgbV9maWZvTGVuZ3RoKTsKKworICAgIGNvbnN0IHNpemVf
dCBpbnB1dEJ1c0xlbmd0aCA9IGlucHV0QnVzLT5sZW5ndGgoKTsKKyAgICBjb25zdCBzaXplX3Qg
cmVtYWluZGVyID0gbV9maWZvTGVuZ3RoIC0gbV9pbmRleFdyaXRlOworCisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fZmlmb0J1cy0+bnVtYmVyT2ZDaGFubmVscygpOyArK2kpIHsKKyAg
ICAgICAgZmxvYXQqIGZpZm9CdXNDaGFubmVsID0gbV9maWZvQnVzLT5jaGFubmVsKGkpLT5tdXRh
YmxlRGF0YSgpOworICAgICAgICBjb25zdCBmbG9hdCogaW5wdXRCdXNDaGFubmVsID0gaW5wdXRC
dXMtPmNoYW5uZWwoaSktPmRhdGEoKTsKKyAgICAgICAgaWYgKHJlbWFpbmRlciA+PSBpbnB1dEJ1
c0xlbmd0aCkgeworICAgICAgICAgICAgLy8gVGhlIHJlbWFpbmRlciBpcyBiaWcgZW5vdWdoIGZv
ciB0aGUgaW5wdXQgZGF0YS4KKyAgICAgICAgICAgIG1lbWNweShmaWZvQnVzQ2hhbm5lbCArIG1f
aW5kZXhXcml0ZSwgaW5wdXRCdXNDaGFubmVsLCBpbnB1dEJ1c0xlbmd0aCAqIHNpemVvZigqZmlm
b0J1c0NoYW5uZWwpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFRoZSBpbnB1
dCBkYXRhIG92ZXJmbG93cyB0aGUgcmVtYWluZGVyIHNpemUuIFdyYXAgYXJvdW5kIHRoZSBpbmRl
eC4KKyAgICAgICAgICAgIG1lbWNweShmaWZvQnVzQ2hhbm5lbCArIG1faW5kZXhXcml0ZSwgaW5w
dXRCdXNDaGFubmVsLCByZW1haW5kZXIgKiBzaXplb2YoKmZpZm9CdXNDaGFubmVsKSk7CisgICAg
ICAgICAgICBtZW1jcHkoZmlmb0J1c0NoYW5uZWwsIGlucHV0QnVzQ2hhbm5lbCArIHJlbWFpbmRl
ciwgKGlucHV0QnVzTGVuZ3RoIC0gcmVtYWluZGVyKSAqIHNpemVvZigqZmlmb0J1c0NoYW5uZWwp
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFVwZGF0ZSB0aGUgd3JpdGUgaW5kZXg7IHdy
YXAgaXQgYXJvdW5kIGlmIG5lY2Vzc2FyeS4KKyAgICBtX2luZGV4V3JpdGUgPSAobV9pbmRleFdy
aXRlICsgaW5wdXRCdXNMZW5ndGgpICUgbV9maWZvTGVuZ3RoOworCisgICAgLy8gSW4gY2FzZSBv
ZiBvdmVyZmxvdywgbW92ZSB0aGUgfGluZGV4UmVhZHwgdG8gdGhlIHVwZGF0ZWQgfGluZGV4V3Jp
dGV8IHRvCisgICAgLy8gYXZvaWQgcmVhZGluZyBvdmVyd3JpdHRlbiBmcmFtZXMgYnkgdGhlIG5l
eHQgcHVsbC4KKyAgICBpZiAoaW5wdXRCdXNMZW5ndGggPiBtX2ZpZm9MZW5ndGggLSBtX2ZyYW1l
c0F2YWlsYWJsZSkKKyAgICAgICAgbV9pbmRleFJlYWQgPSBtX2luZGV4V3JpdGU7CisKKyAgICAv
LyBVcGRhdGUgdGhlIG51bWJlciBvZiBmcmFtZXMgYXZhaWxhYmxlIGluIEZJRk8uCisgICAgbV9m
cmFtZXNBdmFpbGFibGUgPSBzdGQ6Om1pbihtX2ZyYW1lc0F2YWlsYWJsZSArIGlucHV0QnVzTGVu
Z3RoLCBtX2ZpZm9MZW5ndGgpOworICAgIEFTU0VSVCgoKG1faW5kZXhSZWFkICsgbV9mcmFtZXNB
dmFpbGFibGUpICUgbV9maWZvTGVuZ3RoKSA9PSBtX2luZGV4V3JpdGUpOworfQorCisvLyBQdWxs
IHRoZSBkYXRhIG91dCBvZiBGSUZPIHRvIHxvdXRwdXRCdXN8LiBJZiByZW1haW5pbmcgZnJhbWUg
aW4gdGhlIEZJRk8KKy8vIGlzIGxlc3MgdGhhbiB0aGUgZnJhbWVzIHRvIHB1bGwsIHByb3ZpZGVz
IHJlbWFpbmluZyBmcmFtZSBwbHVzIHRoZSBzaWxlbmNlLgorc2l6ZV90IFB1c2hQdWxsRklGTzo6
cHVsbChBdWRpb0J1cyogb3V0cHV0QnVzLCBzaXplX3QgZnJhbWVzUmVxdWVzdGVkKQoreworICAg
IEFTU0VSVChvdXRwdXRCdXMpOworICAgIEFTU0VSVChmcmFtZXNSZXF1ZXN0ZWQgPD0gb3V0cHV0
QnVzLT5sZW5ndGgoKSk7CisgICAgQVNTRVJUKGZyYW1lc1JlcXVlc3RlZCA8PSBtX2ZpZm9MZW5n
dGgpOworICAgIEFTU0VSVChtX2luZGV4UmVhZCA8IG1fZmlmb0xlbmd0aCk7CisKKyAgICBjb25z
dCBzaXplX3QgcmVtYWluZGVyID0gbV9maWZvTGVuZ3RoIC0gbV9pbmRleFJlYWQ7CisgICAgY29u
c3Qgc2l6ZV90IGZyYW1lc1RvRmlsbCA9IHN0ZDo6bWluKG1fZnJhbWVzQXZhaWxhYmxlLCBmcmFt
ZXNSZXF1ZXN0ZWQpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZmlmb0J1cy0+
bnVtYmVyT2ZDaGFubmVscygpOyArK2kpIHsKKyAgICAgICAgY29uc3QgZmxvYXQqIGZpZm9CdXND
aGFubmVsID0gbV9maWZvQnVzLT5jaGFubmVsKGkpLT5kYXRhKCk7CisgICAgICAgIGZsb2F0KiBv
dXRwdXRCdXNDaGFubmVsID0gb3V0cHV0QnVzLT5jaGFubmVsKGkpLT5tdXRhYmxlRGF0YSgpOwor
CisgICAgICAgIC8vIEZpbGwgdXAgdGhlIG91dHB1dCBidXMgd2l0aCB0aGUgYXZhaWxhYmxlIGZy
YW1lcyBmaXJzdC4KKyAgICAgICAgaWYgKHJlbWFpbmRlciA+PSBmcmFtZXNUb0ZpbGwpIHsKKyAg
ICAgICAgICAgIC8vIFRoZSByZW1haW5kZXIgaXMgYmlnIGVub3VnaCBmb3IgdGhlIGZyYW1lcyB0
byBwdWxsLgorICAgICAgICAgICAgbWVtY3B5KG91dHB1dEJ1c0NoYW5uZWwsIGZpZm9CdXNDaGFu
bmVsICsgbV9pbmRleFJlYWQsIGZyYW1lc1RvRmlsbCAqIHNpemVvZigqZmlmb0J1c0NoYW5uZWwp
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFRoZSBmcmFtZXMgdG8gcHVsbCBp
cyBiaWdnZXIgdGhhbiB0aGUgcmVtYWluZGVyIHNpemUuCisgICAgICAgICAgICAvLyBXcmFwIGFy
b3VuZCB0aGUgaW5kZXguCisgICAgICAgICAgICBtZW1jcHkob3V0cHV0QnVzQ2hhbm5lbCwgZmlm
b0J1c0NoYW5uZWwgKyBtX2luZGV4UmVhZCwgcmVtYWluZGVyICogc2l6ZW9mKCpmaWZvQnVzQ2hh
bm5lbCkpOworICAgICAgICAgICAgbWVtY3B5KG91dHB1dEJ1c0NoYW5uZWwgKyByZW1haW5kZXIs
IGZpZm9CdXNDaGFubmVsLCAoZnJhbWVzVG9GaWxsIC0gcmVtYWluZGVyKSAqIHNpemVvZigqZmlm
b0J1c0NoYW5uZWwpKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFRoZSBmcmFtZXMgYXZhaWxh
YmxlIHdhcyBub3QgZW5vdWdoIHRvIGZ1bGZpbGwgdGhlIHJlcXVlc3RlZCBmcmFtZXMuIEZpbGwK
KyAgICAgICAgLy8gdGhlIHJlc3Qgb2YgdGhlIGNoYW5uZWwgd2l0aCBzaWxlbmNlLgorICAgICAg
ICBpZiAoZnJhbWVzUmVxdWVzdGVkID4gZnJhbWVzVG9GaWxsKQorICAgICAgICAgICAgbWVtc2V0
KG91dHB1dEJ1c0NoYW5uZWwgKyBmcmFtZXNUb0ZpbGwsIDAsIChmcmFtZXNSZXF1ZXN0ZWQgLSBm
cmFtZXNUb0ZpbGwpICogc2l6ZW9mKCpvdXRwdXRCdXNDaGFubmVsKSk7CisgICAgfQorCisgICAg
Ly8gVXBkYXRlIHRoZSByZWFkIGluZGV4OyB3cmFwIGl0IGFyb3VuZCBpZiBuZWNlc3NhcnkuCisg
ICAgbV9pbmRleFJlYWQgPSAobV9pbmRleFJlYWQgKyBmcmFtZXNUb0ZpbGwpICUgbV9maWZvTGVu
Z3RoOworCisgICAgLy8gSW4gY2FzZSBvZiB1bmRlcmZsb3csIG1vdmUgdGhlIHxpbmRleFdyaXRl
fCB0byB0aGUgdXBkYXRlZCB8aW5kZXhSZWFkfC4KKyAgICBpZiAoZnJhbWVzUmVxdWVzdGVkID4g
ZnJhbWVzVG9GaWxsKQorICAgICAgICBtX2luZGV4V3JpdGUgPSBtX2luZGV4UmVhZDsKKworICAg
IC8vIFVwZGF0ZSB0aGUgbnVtYmVyIG9mIGZyYW1lcyBpbiBGSUZPLgorICAgIG1fZnJhbWVzQXZh
aWxhYmxlIC09IGZyYW1lc1RvRmlsbDsKKyAgICBBU1NFUlQoKChtX2luZGV4UmVhZCArIG1fZnJh
bWVzQXZhaWxhYmxlKSAlIG1fZmlmb0xlbmd0aCkgPT0gbV9pbmRleFdyaXRlKTsKKworICAgIC8v
IHxmcmFtZXNSZXF1ZXN0ZWQgPiBtX2ZyYW1lc0F2YWlsYWJsZXwgbWVhbnMgdGhlIGZyYW1lcyBp
biBGSUZPIGlzIG5vdAorICAgIC8vIGVub3VnaCB0byBmdWxmaWxsIHRoZSByZXF1ZXN0ZWQgZnJh
bWVzIGZyb20gdGhlIGF1ZGlvIGRldmljZS4KKyAgICByZXR1cm4gZnJhbWVzUmVxdWVzdGVkID4g
bV9mcmFtZXNBdmFpbGFibGUgPyBmcmFtZXNSZXF1ZXN0ZWQgLSBtX2ZyYW1lc0F2YWlsYWJsZSA6
IDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1B1c2hQdWxsRklGTy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUHVzaFB1bGxGSUZPLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzY0ODQ2YjNhN2M3ZmY5ZDc0MmRj
NGQyNzM1MWRkMzk4ZjM2YmU1NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1B1c2hQdWxsRklGTy5oCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5
cmlnaHQgMjAxNyBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlv
QnVzOworCisvLyBQdXNoUHVsbEZJRk8gY2xhc3MgaXMgYW4gaW50ZXJtZWRpYXRlIGF1ZGlvIHNh
bXBsZSBzdG9yYWdlIGJldHdlZW4KKy8vIFdlYktpdC1XZWJBdWRpbyBhbmQgdGhlIHJlbmRlcmVy
LiBUaGUgcmVuZGVyZXIncyBoYXJkd2FyZSBjYWxsYmFjayBidWZmZXIgc2l6ZQorLy8gdmFyaWVz
IG9uIHRoZSBwbGF0Zm9ybSwgYnV0IHRoZSBXZWJBdWRpbyBhbHdheXMgcmVuZGVycyAxMjggZnJh
bWVzIChyZW5kZXIKKy8vIHF1YW50dW0sIFJRKSB0aHVzIEZJRk8gaXMgbmVlZGVkIHRvIGhhbmRs
ZSB0aGUgZ2VuZXJhbCBjYXNlLgorY2xhc3MgUHVzaFB1bGxGSUZPIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQdXNoUHVsbEZJRk8pOwor
CitwdWJsaWM6CisgICAgLy8gTWF4aW11bSBGSUZPIGxlbmd0aC4gKDUxMiByZW5kZXIgcXVhbnRh
KQorICAgIHN0YXRpYyBjb25zdCBzaXplX3Qga01heEZJRk9MZW5ndGg7CisKKyAgICAvLyB8Zmlm
b0xlbmd0aHwgY2Fubm90IGV4Y2VlZCB8a01heEZJRk9MZW5ndGh8LiBPdGhlcndpc2UgaXQgY3Jh
c2hlcy4KKyAgICBQdXNoUHVsbEZJRk8odW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90
IGZpZm9MZW5ndGgpOworICAgIH5QdXNoUHVsbEZJRk8oKTsKKworICAgIC8vIFB1c2hlcyB0aGUg
cmVuZGVyZWQgZnJhbWVzIGJ5IFdlYkF1ZGlvIGVuZ2luZS4KKyAgICAvLyAgLSBUaGUgfGlucHV0
QnVzfCBsZW5ndGggaXMgMTI4IGZyYW1lcyAoMSByZW5kZXIgcXVhbnR1bSksIGZpeGVkLgorICAg
IC8vICAtIEluIGNhc2Ugb2Ygb3ZlcmZsb3cgKEZJRk8gZnVsbCB3aGlsZSBwdXNoKSwgdGhlIGV4
aXN0aW5nIGZyYW1lcyBpbiBGSUZPCisgICAgLy8gICAgd2lsbCBiZSBvdmVyd3JpdHRlbiBhbmQg
fGluZGV4UmVhZHwgd2lsbCBiZSBmb3JjaWJseSBtb3ZlZCB0bworICAgIC8vICAgIHxpbmRleFdy
aXRlfCB0byBhdm9pZCByZWFkaW5nIG92ZXJ3cml0dGVuIGZyYW1lcy4KKyAgICB2b2lkIHB1c2go
Y29uc3QgQXVkaW9CdXMqIGlucHV0QnVzKTsKKworICAgIC8vIFB1bGxzIHxmcmFtZXNSZXF1ZXN0
ZWR8IGJ5IHRoZSBhdWRpbyBkZXZpY2UgdGhyZWFkIGFuZCByZXR1cm5zIHRoZSBhY3R1YWwKKyAg
ICAvLyBudW1iZXIgb2YgZnJhbWVzIHRvIGJlIHJlbmRlcmVkIGJ5IHRoZSBzb3VyY2UuIChpLmUu
IFdlYkF1ZGlvIGdyYXBoKQorICAgIHNpemVfdCBwdWxsKEF1ZGlvQnVzKiBvdXRwdXRCdXMsIHNp
emVfdCBmcmFtZXNSZXF1ZXN0ZWQpOworCisgICAgc2l6ZV90IGZyYW1lc0F2YWlsYWJsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZnJhbWVzQXZhaWxhYmxlOyB9CisgICAgc2l6ZV90IGxlbmd0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fZmlmb0xlbmd0aDsgfQorICAgIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5l
bHMoKSBjb25zdCB7IHJldHVybiBtX2ZpZm9CdXMtPm51bWJlck9mQ2hhbm5lbHMoKTsgfQorICAg
IEF1ZGlvQnVzKiBidXMoKSBjb25zdCB7IHJldHVybiBtX2ZpZm9CdXMuZ2V0KCk7IH0KKworcHJp
dmF0ZToKKyAgICAvLyBUaGUgc2l6ZSBvZiB0aGUgRklGTy4KKyAgICBjb25zdCBzaXplX3QgbV9m
aWZvTGVuZ3RoID0gMDsKKworICAgIFJlZlB0cjxBdWRpb0J1cz4gbV9maWZvQnVzOworCisgICAg
Ly8gVGhlIG51bWJlciBvZiBmcmFtZXMgaW4gdGhlIEZJRk8gYWN0dWFsbHkgYXZhaWxhYmxlIGZv
ciBwdWxsaW5nLgorICAgIHNpemVfdCBtX2ZyYW1lc0F2YWlsYWJsZSB7IDAgfTsKKworICAgIHNp
emVfdCBtX2luZGV4UmVhZCB7IDAgfTsKKyAgICBzaXplX3QgbV9pbmRleFdyaXRlIHsgMCB9Owor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5jcHAKaW5kZXggNTIwNTI3YjU0YmE1Nzg2ZDhjZWJk
ZmFiNTNhNDU2OGE5M2RlNmVkOC4uMjY1MWM0ODcwOTU3NGQ5ODIzY2ZkZmU2OWU4NWQ3MDY4MmVk
MDM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2Ft
cGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxl
ci5jcHAKQEAgLTM5LDUxICszOSwxMTMgQEAKICNpbmNsdWRlIDxlbW1pbnRyaW4uaD4KICNlbmRp
ZgogCi0vLyBJbnB1dCBidWZmZXIgbGF5b3V0LCBkaXZpZGluZyB0aGUgdG90YWwgYnVmZmVyIGlu
dG8gcmVnaW9ucyAocjAgLSByNSk6CisvLyBJbml0aWFsIGlucHV0IGJ1ZmZlciBsYXlvdXQsIGRp
dmlkaW5nIGludG8gcmVnaW9ucyByMCB0byByNCAobm90ZTogcjAsIHIzCisvLyBhbmQgcjQgd2ls
bCBtb3ZlIGFmdGVyIHRoZSBmaXJzdCBsb2FkKToKIC8vCiAvLyB8LS0tLS0tLS0tLS0tLS0tLXwt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tfC0tLS0tLS0tLS0tLS0tLS18CiAvLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYmxvY2tTaXplICsga2VybmVsU2l6ZSAvIDIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fcmVxdWVzdEZyYW1lcwogLy8gICAgICAgICAgICAgICAgICAgPC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tPgotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHIwCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByMCAoZHVyaW5nIGZpcnN0IGxvYWQpCiAvLwogLy8gICBrZXJuZWxTaXplIC8gMiAgIGtl
cm5lbFNpemUgLyAyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsU2l6ZSAv
IDIgICAgIGtlcm5lbFNpemUgLyAyIAogLy8gPC0tLS0tLS0tLS0tLS0tLT4gPC0tLS0tLS0tLS0t
LS0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8LS0tLS0tLS0tLS0tLS0tPiA8LS0t
LS0tLS0tLS0tLS0tPgogLy8gICAgICAgICByMSAgICAgICAgICAgICAgICByMiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIzICAgICAgICAgICAgICAgIHI0CiAv
LyAKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2Nr
U2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgIAotLy8gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tPgotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHI1CisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9i
bG9ja1NpemUgPT0gcjQgLSByMgorLy8gICAgICAgICAgICAgICAgICAgPC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4KKy8vCisvLyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9yZXF1ZXN0RnJhbWVzCisvLyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDwtLS0tLS0tLS0tLS0tLS0tLS0gLi4uIC0tLS0tLS0t
LS0tLS0tLS0tPgorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHIwIChkdXJpbmcgc2Vjb25kIGxvYWQpCisvLworLy8gT24gdGhlIHNlY29uZCByZXF1ZXN0
IHIwIHNsaWRlcyB0byB0aGUgcmlnaHQgYnkga2VybmVsU2l6ZSAvIDIgYW5kIHIzLCByNAorLy8g
YW5kIG1fYmxvY2tTaXplIGFyZSByZWluaXRpYWxpemVkIHZpYSBzdGVwICgzKSBpbiB0aGUgYWxn
b3JpdGhtIGJlbG93LgorLy8KKy8vIFRoZXNlIG5ldyByZWdpb25zIHJlbWFpbiBjb25zdGFudCB1
bnRpbCBhIEZsdXNoKCkgb2NjdXJzLiBXaGlsZSBjb21wbGljYXRlZCwKKy8vIHRoaXMgYWxsb3dz
IHVzIHRvIHJlZHVjZSBqaXR0ZXIgYnkgYWx3YXlzIHJlcXVlc3RpbmcgdGhlIHNhbWUgYW1vdW50
IGZyb20gdGhlCisvLyBwcm92aWRlZCBjYWxsYmFjay4KIAogLy8gVGhlIEFsZ29yaXRobToKIC8v
Ci0vLyAxKSBDb25zdW1lIGlucHV0IGZyYW1lcyBpbnRvIHIwIChyMSBpcyB6ZXJvLWluaXRpYWxp
emVkKS4KLS8vIDIpIFBvc2l0aW9uIGtlcm5lbCBjZW50ZXJlZCBhdCBzdGFydCBvZiByMCAocjIp
IGFuZCBnZW5lcmF0ZSBvdXRwdXQgZnJhbWVzIHVudGlsIGtlcm5lbCBpcyBjZW50ZXJlZCBhdCBz
dGFydCBvZiByNC4KLS8vICAgIG9yIHdlJ3ZlIGZpbmlzaGVkIGdlbmVyYXRpbmcgYWxsIHRoZSBv
dXRwdXQgZnJhbWVzLgotLy8gMykgQ29weSByMyB0byByMSBhbmQgcjQgdG8gcjIuCi0vLyA0KSBD
b25zdW1lIGlucHV0IGZyYW1lcyBpbnRvIHI1ICh6ZXJvLXBhZCBpZiB3ZSBydW4gb3V0IG9mIGlu
cHV0KS4KLS8vIDUpIEdvdG8gKDIpIHVudGlsIGFsbCBvZiBpbnB1dCBpcyBjb25zdW1lZC4KKy8v
IDEpIEFsbG9jYXRlIGlucHV0X2J1ZmZlciBvZiBzaXplOiBtX3JlcXVlc3RGcmFtZXMgKyBrZXJu
ZWxTaXplOyB0aGlzIGVuc3VyZXMKKy8vICAgIHRoZXJlJ3MgZW5vdWdoIHJvb20gdG8gcmVhZCBt
X3JlcXVlc3RGcmFtZXMgZnJvbSB0aGUgY2FsbGJhY2sgaW50byByZWdpb24KKy8vICAgIHIwICh3
aGljaCB3aWxsIG1vdmUgYmV0d2VlbiB0aGUgZmlyc3QgYW5kIHN1YnNlcXVlbnQgcGFzc2VzKS4K
Ky8vCisvLyAyKSBMZXQgcjEsIHIyIGVhY2ggcmVwcmVzZW50IGhhbGYgdGhlIGtlcm5lbCBjZW50
ZXJlZCBhcm91bmQgcjA6CisvLworLy8gICAgICAgIHIwID0gbV9pbnB1dEJ1ZmZlciArIGtlcm5l
bFNpemUgLyAyCisvLyAgICAgICAgcjEgPSBtX2lucHV0QnVmZmVyCisvLyAgICAgICAgcjIgPSBy
MAorLy8KKy8vICAgIHIwIGlzIGFsd2F5cyBtX3JlcXVlc3RGcmFtZXMgaW4gc2l6ZS4gcjEsIHIy
IGFyZSBrZXJuZWxTaXplIC8gMiBpbgorLy8gICAgc2l6ZS4gcjEgbXVzdCBiZSB6ZXJvIGluaXRp
YWxpemVkIHRvIGF2b2lkIGNvbnZvbHV0aW9uIHdpdGggZ2FyYmFnZSAoc2VlCisvLyAgICBzdGVw
ICg1KSBmb3Igd2h5KS4KKy8vCisvLyAzKSBMZXQgcjMsIHI0IGVhY2ggcmVwcmVzZW50IGhhbGYg
dGhlIGtlcm5lbCByaWdodCBhbGlnbmVkIHdpdGggdGhlIGVuZCBvZgorLy8gICAgcjAgYW5kIGNo
b29zZSBtX2Jsb2NrU2l6ZSBhcyB0aGUgZGlzdGFuY2UgaW4gZnJhbWVzIGJldHdlZW4gcjQgYW5k
IHIyOgorLy8KKy8vICAgICAgICByMyA9IHIwICsgbV9yZXF1ZXN0RnJhbWVzIC0ga2VybmVsU2l6
ZQorLy8gICAgICAgIHI0ID0gcjAgKyBtX3JlcXVlc3RGcmFtZXMgLSBrZXJuZWxTaXplIC8gMgor
Ly8gICAgICAgIG1fYmxvY2tTaXplID0gcjQgLSByMiA9IG1fcmVxdWVzdEZyYW1lcyAtIGtlcm5l
bFNpemUgLyAyCisvLworLy8gNCkgQ29uc3VtZSBtX3JlcXVlc3RGcmFtZXMgZnJhbWVzIGludG8g
cjAuCisvLworLy8gNSkgUG9zaXRpb24ga2VybmVsIGNlbnRlcmVkIGF0IHN0YXJ0IG9mIHIyIGFu
ZCBnZW5lcmF0ZSBvdXRwdXQgZnJhbWVzIHVudGlsCisvLyAgICB0aGUga2VybmVsIGlzIGNlbnRl
cmVkIGF0IHRoZSBzdGFydCBvZiByNCBvciB3ZSd2ZSBmaW5pc2hlZCBnZW5lcmF0aW5nCisvLyAg
ICBhbGwgdGhlIG91dHB1dCBmcmFtZXMuCisvLworLy8gNikgV3JhcCBsZWZ0IG92ZXIgZGF0YSBm
cm9tIHRoZSByMyB0byByMSBhbmQgcjQgdG8gcjIuCisvLworLy8gNykgSWYgd2UncmUgb24gdGhl
IHNlY29uZCBsb2FkLCBpbiBvcmRlciB0byBhdm9pZCBvdmVyd3JpdGluZyB0aGUgZnJhbWVzIHdl
CisvLyAgICBqdXN0IHdyYXBwZWQgZnJvbSByNCB3ZSBuZWVkIHRvIHNsaWRlIHIwIHRvIHRoZSBy
aWdodCBieSB0aGUgc2l6ZSBvZgorLy8gICAgcjQsIHdoaWNoIGlzIGtlcm5lbFNpemUgLyAyOgor
Ly8KKy8vICAgICAgICByMCA9IHIwICsga2VybmVsU2l6ZSAvIDIgPSBtX2lucHV0QnVmZmVyICsg
a2VybmVsU2l6ZQorLy8KKy8vICAgIHIzLCByNCwgYW5kIG1fYmxvY2tTaXplIHRoZW4gbmVlZCB0
byBiZSByZWluaXRpYWxpemVkLCBzbyBnb3RvICgzKS4KKy8vCisvLyA4KSBFbHNlLCBpZiB3ZSdy
ZSBub3Qgb24gdGhlIHNlY29uZCBsb2FkLCBnb3RvICg0KS4KIC8vCiAvLyBub3RlOiB3ZSdyZSBn
bG9zc2luZyBvdmVyIGhvdyB0aGUgc3ViLXNhbXBsZSBoYW5kbGluZyB3b3JrcyB3aXRoIG1fdmly
dHVhbFNvdXJjZUluZGV4LCBldGMuCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2luY1Jlc2Ft
cGxlcjo6U2luY1Jlc2FtcGxlcihkb3VibGUgc2NhbGVGYWN0b3IsIHVuc2lnbmVkIGtlcm5lbFNp
emUsIHVuc2lnbmVkIG51bWJlck9mS2VybmVsT2Zmc2V0cykKK2NvbnN0ZXhwciB1bnNpZ25lZCBk
ZWZhdWx0UmVxdWVzdEZyYW1lcyB7IDUxMiB9OworY29uc3RleHByIHVuc2lnbmVkIGtlcm5lbFNp
emUgeyAzMiB9OworY29uc3RleHByIHVuc2lnbmVkIG51bWJlck9mS2VybmVsT2Zmc2V0cyB7IDMy
IH07CisKK1NpbmNSZXNhbXBsZXI6OlNpbmNSZXNhbXBsZXIoZG91YmxlIHNjYWxlRmFjdG9yLCBP
cHRpb25hbDx1bnNpZ25lZD4gcmVxdWVzdEZyYW1lcykKICAgICA6IG1fc2NhbGVGYWN0b3Ioc2Nh
bGVGYWN0b3IpCi0gICAgLCBtX2tlcm5lbFNpemUoa2VybmVsU2l6ZSkKLSAgICAsIG1fbnVtYmVy
T2ZLZXJuZWxPZmZzZXRzKG51bWJlck9mS2VybmVsT2Zmc2V0cykKLSAgICAsIG1fa2VybmVsU3Rv
cmFnZShtX2tlcm5lbFNpemUgKiAobV9udW1iZXJPZktlcm5lbE9mZnNldHMgKyAxKSkKLSAgICAs
IG1fdmlydHVhbFNvdXJjZUluZGV4KDApCi0gICAgLCBtX2Jsb2NrU2l6ZSg1MTIpCi0gICAgLCBt
X2lucHV0QnVmZmVyKG1fYmxvY2tTaXplICsgbV9rZXJuZWxTaXplKSAvLyBTZWUgaW5wdXQgYnVm
ZmVyIGxheW91dCBhYm92ZS4KLSAgICAsIG1fc291cmNlKDApCi0gICAgLCBtX3NvdXJjZUZyYW1l
c0F2YWlsYWJsZSgwKQotICAgICwgbV9zb3VyY2VQcm92aWRlcigwKQotICAgICwgbV9pc0J1ZmZl
clByaW1lZChmYWxzZSkKKyAgICAsIG1fa2VybmVsU3RvcmFnZShrZXJuZWxTaXplICogKG51bWJl
ck9mS2VybmVsT2Zmc2V0cyArIDEpKQorICAgICwgbV9yZXF1ZXN0RnJhbWVzKHJlcXVlc3RGcmFt
ZXMudmFsdWVPcihkZWZhdWx0UmVxdWVzdEZyYW1lcykpCisgICAgLCBtX2lucHV0QnVmZmVyKG1f
cmVxdWVzdEZyYW1lcyArIGtlcm5lbFNpemUpIC8vIFNlZSBpbnB1dCBidWZmZXIgbGF5b3V0IGFi
b3ZlLgorICAgICwgbV9yMShtX2lucHV0QnVmZmVyLmRhdGEoKSkKKyAgICAsIG1fcjIobV9pbnB1
dEJ1ZmZlci5kYXRhKCkgKyBrZXJuZWxTaXplIC8gMikKIHsKKyAgICBBU1NFUlQobV9yZXF1ZXN0
RnJhbWVzID4gMCk7CisgICAgdXBkYXRlUmVnaW9ucyhmYWxzZSk7CisgICAgQVNTRVJUKG1fYmxv
Y2tTaXplID4ga2VybmVsU2l6ZSk7CiAgICAgaW5pdGlhbGl6ZUtlcm5lbCgpOwogfQogCit2b2lk
IFNpbmNSZXNhbXBsZXI6OnVwZGF0ZVJlZ2lvbnMoYm9vbCBpc1NlY29uZExvYWQpCit7CisgICAg
Ly8gU2V0dXAgdmFyaW91cyByZWdpb24gcG9pbnRlcnMgaW4gdGhlIGJ1ZmZlciAoc2VlIGRpYWdy
YW0gYWJvdmUpLiBJZiB3ZSdyZQorICAgIC8vIG9uIHRoZSBzZWNvbmQgbG9hZCB3ZSBuZWVkIHRv
IHNsaWRlIG1fcjAgdG8gdGhlIHJpZ2h0IGJ5IGtlcm5lbFNpemUgLyAyLgorICAgIG1fcjAgPSBt
X2lucHV0QnVmZmVyLmRhdGEoKSArIChpc1NlY29uZExvYWQgPyBrZXJuZWxTaXplIDoga2VybmVs
U2l6ZSAvIDIpOworICAgIG1fcjMgPSBtX3IwICsgbV9yZXF1ZXN0RnJhbWVzIC0ga2VybmVsU2l6
ZTsKKyAgICBtX3I0ID0gbV9yMCArIG1fcmVxdWVzdEZyYW1lcyAtIGtlcm5lbFNpemUgLyAyOwor
ICAgIG1fYmxvY2tTaXplID0gbV9yNCAtIG1fcjI7CisKKyAgICAvLyBtX3IxIGF0IHRoZSBiZWdp
bm5pbmcgb2YgdGhlIGJ1ZmZlci4KKyAgICBBU1NFUlQobV9yMSA9PSBtX2lucHV0QnVmZmVyLmRh
dGEoKSk7CisgICAgLy8gbV9yMSBsZWZ0IG9mIG1fcjIsIG1fcjQgbGVmdCBvZiBtX3IzIGFuZCBz
aXplIGNvcnJlY3QuCisgICAgQVNTRVJUKChtX3IyIC0gbV9yMSkgPT0gKG1fcjQgLSBtX3IzKSk7
CisgICAgLy8gbV9yMiBsZWZ0IG9mIHIzLgorICAgIEFTU0VSVChtX3IyIDw9IG1fcjMpOworfQor
CiB2b2lkIFNpbmNSZXNhbXBsZXI6OmluaXRpYWxpemVLZXJuZWwoKQogewogICAgIC8vIEJsYWNr
bWFuIHdpbmRvdyBwYXJhbWV0ZXJzLgpAQCAtOTgsMTYgKzE2MCwxNiBAQCB2b2lkIFNpbmNSZXNh
bXBsZXI6OmluaXRpYWxpemVLZXJuZWwoKQogICAgIC8vIFRoZSBzaW5jIGZ1bmN0aW9uIGlzIGFu
IGlkZWFsaXplZCBicmljay13YWxsIGZpbHRlciwgYnV0IHNpbmNlIHdlJ3JlIHdpbmRvd2luZyBp
dCB0aGUKICAgICAvLyB0cmFuc2l0aW9uIGZyb20gcGFzcyB0byBzdG9wIGRvZXMgbm90IGhhcHBl
biByaWdodCBhd2F5LiBTbyB3ZSBzaG91bGQgYWRqdXN0IHRoZQogICAgIC8vIGxvd3Bhc3MgZmls
dGVyIGN1dG9mZiBzbGlnaHRseSBkb3dud2FyZCB0byBhdm9pZCBzb21lIGFsaWFzaW5nIGF0IHRo
ZSB2ZXJ5IGhpZ2gtZW5kLgotICAgIC8vIEZJWE1FOiB0aGlzIHZhbHVlIGlzIGVtcGlyaWNhbCBh
bmQgdG8gYmUgbW9yZSBleGFjdCBzaG91bGQgdmFyeSBkZXBlbmRpbmcgb24gbV9rZXJuZWxTaXpl
LgorICAgIC8vIEZJWE1FOiB0aGlzIHZhbHVlIGlzIGVtcGlyaWNhbCBhbmQgdG8gYmUgbW9yZSBl
eGFjdCBzaG91bGQgdmFyeSBkZXBlbmRpbmcgb24ga2VybmVsU2l6ZS4KICAgICBzaW5jU2NhbGVG
YWN0b3IgKj0gMC45OwogCi0gICAgaW50IG4gPSBtX2tlcm5lbFNpemU7CisgICAgaW50IG4gPSBr
ZXJuZWxTaXplOwogICAgIGludCBoYWxmU2l6ZSA9IG4gLyAyOwogCiAgICAgLy8gR2VuZXJhdGVz
IGEgc2V0IG9mIHdpbmRvd2VkIHNpbmMoKSBrZXJuZWxzLgogICAgIC8vIFdlIGdlbmVyYXRlIGEg
cmFuZ2Ugb2Ygc3ViLXNhbXBsZSBvZmZzZXRzIGZyb20gMC4wIHRvIDEuMC4KLSAgICBmb3IgKHVu
c2lnbmVkIG9mZnNldEluZGV4ID0gMDsgb2Zmc2V0SW5kZXggPD0gbV9udW1iZXJPZktlcm5lbE9m
ZnNldHM7ICsrb2Zmc2V0SW5kZXgpIHsKLSAgICAgICAgZG91YmxlIHN1YnNhbXBsZU9mZnNldCA9
IHN0YXRpY19jYXN0PGRvdWJsZT4ob2Zmc2V0SW5kZXgpIC8gbV9udW1iZXJPZktlcm5lbE9mZnNl
dHM7CisgICAgZm9yICh1bnNpZ25lZCBvZmZzZXRJbmRleCA9IDA7IG9mZnNldEluZGV4IDw9IG51
bWJlck9mS2VybmVsT2Zmc2V0czsgKytvZmZzZXRJbmRleCkgeworICAgICAgICBkb3VibGUgc3Vi
c2FtcGxlT2Zmc2V0ID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihvZmZzZXRJbmRleCkgLyBudW1iZXJP
Zktlcm5lbE9mZnNldHM7CiAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyArK2kpIHsK
ICAgICAgICAgICAgIC8vIENvbXB1dGUgdGhlIHNpbmMoKSB3aXRoIG9mZnNldC4KQEAgLTEyMCw3
ICsxODIsNyBAQCB2b2lkIFNpbmNSZXNhbXBsZXI6OmluaXRpYWxpemVLZXJuZWwoKQogICAgICAg
ICAgICAgZG91YmxlIHdpbmRvdyA9IGEwIC0gYTEgKiBjb3MoMi4wICogcGlEb3VibGUgKiB4KSAr
IGEyICogY29zKDQuMCAqIHBpRG91YmxlICogeCk7CiAKICAgICAgICAgICAgIC8vIFdpbmRvdyB0
aGUgc2luYygpIGZ1bmN0aW9uIGFuZCBzdG9yZSBhdCB0aGUgY29ycmVjdCBvZmZzZXQuCi0gICAg
ICAgICAgICBtX2tlcm5lbFN0b3JhZ2VbaSArIG9mZnNldEluZGV4ICogbV9rZXJuZWxTaXplXSA9
IHNpbmMgKiB3aW5kb3c7CisgICAgICAgICAgICBtX2tlcm5lbFN0b3JhZ2VbaSArIG9mZnNldElu
ZGV4ICoga2VybmVsU2l6ZV0gPSBzaW5jICogd2luZG93OwogICAgICAgICB9CiAgICAgfQogfQpA
QCAtMTkwLDcgKzI1Miw3IEBAIHZvaWQgU2luY1Jlc2FtcGxlcjo6cHJvY2Vzcyhjb25zdCBmbG9h
dCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIG51CiAgICAgdW5zaWduZWQg
cmVtYWluaW5nID0gbnVtYmVyT2ZEZXN0aW5hdGlvbkZyYW1lczsKICAgICAKICAgICB3aGlsZSAo
cmVtYWluaW5nKSB7Ci0gICAgICAgIHVuc2lnbmVkIGZyYW1lc1RoaXNUaW1lID0gc3RkOjptaW4o
cmVtYWluaW5nLCBtX2Jsb2NrU2l6ZSk7CisgICAgICAgIHVuc2lnbmVkIGZyYW1lc1RoaXNUaW1l
ID0gc3RkOjptaW4ocmVtYWluaW5nLCBtX3JlcXVlc3RGcmFtZXMpOwogICAgICAgICBwcm9jZXNz
KCZzb3VyY2VQcm92aWRlciwgZGVzdGluYXRpb24sIGZyYW1lc1RoaXNUaW1lKTsKICAgICAgICAg
CiAgICAgICAgIGRlc3RpbmF0aW9uICs9IGZyYW1lc1RoaXNUaW1lOwpAQCAtMjAwLDI3ICsyNjIs
MTggQEAgdm9pZCBTaW5jUmVzYW1wbGVyOjpwcm9jZXNzKGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZs
b2F0KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgbnUKIAogdm9pZCBTaW5jUmVzYW1wbGVyOjpwcm9j
ZXNzKEF1ZGlvU291cmNlUHJvdmlkZXIqIHNvdXJjZVByb3ZpZGVyLCBmbG9hdCogZGVzdGluYXRp
b24sIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7Ci0gICAgYm9vbCBpc0dvb2QgPSBzb3VyY2VQ
cm92aWRlciAmJiBtX2Jsb2NrU2l6ZSA+IG1fa2VybmVsU2l6ZSAmJiBtX2lucHV0QnVmZmVyLnNp
emUoKSA+PSBtX2Jsb2NrU2l6ZSArIG1fa2VybmVsU2l6ZSAmJiAhKG1fa2VybmVsU2l6ZSAlIDIp
OwotICAgIEFTU0VSVChpc0dvb2QpOwotICAgIGlmICghaXNHb29kKQorICAgIEFTU0VSVChzb3Vy
Y2VQcm92aWRlcik7CisgICAgaWYgKCFzb3VyY2VQcm92aWRlcikKICAgICAgICAgcmV0dXJuOwog
ICAgIAogICAgIG1fc291cmNlUHJvdmlkZXIgPSBzb3VyY2VQcm92aWRlcjsKIAogICAgIHVuc2ln
bmVkIG51bWJlck9mRGVzdGluYXRpb25GcmFtZXMgPSBmcmFtZXNUb1Byb2Nlc3M7Ci0gICAgCi0g
ICAgLy8gU2V0dXAgdmFyaW91cyByZWdpb24gcG9pbnRlcnMgaW4gdGhlIGJ1ZmZlciAoc2VlIGRp
YWdyYW0gYWJvdmUpLgotICAgIGZsb2F0KiByMCA9IG1faW5wdXRCdWZmZXIuZGF0YSgpICsgbV9r
ZXJuZWxTaXplIC8gMjsKLSAgICBmbG9hdCogcjEgPSBtX2lucHV0QnVmZmVyLmRhdGEoKTsKLSAg
ICBmbG9hdCogcjIgPSByMDsKLSAgICBmbG9hdCogcjMgPSByMCArIG1fYmxvY2tTaXplIC0gbV9r
ZXJuZWxTaXplIC8gMjsKLSAgICBmbG9hdCogcjQgPSByMCArIG1fYmxvY2tTaXplOwotICAgIGZs
b2F0KiByNSA9IHIwICsgbV9rZXJuZWxTaXplIC8gMjsKIAogICAgIC8vIFN0ZXAgKDEpCiAgICAg
Ly8gUHJpbWUgdGhlIGlucHV0IGJ1ZmZlciBhdCB0aGUgc3RhcnQgb2YgdGhlIGlucHV0IHN0cmVh
bS4KICAgICBpZiAoIW1faXNCdWZmZXJQcmltZWQpIHsKLSAgICAgICAgY29uc3VtZVNvdXJjZShy
MCwgbV9ibG9ja1NpemUgKyBtX2tlcm5lbFNpemUgLyAyKTsKKyAgICAgICAgY29uc3VtZVNvdXJj
ZShtX3IwLCBtX3JlcXVlc3RGcmFtZXMpOwogICAgICAgICBtX2lzQnVmZmVyUHJpbWVkID0gdHJ1
ZTsKICAgICB9CiAgICAgCkBAIC0yMzIsMTQgKzI4NSwxNCBAQCB2b2lkIFNpbmNSZXNhbXBsZXI6
OnByb2Nlc3MoQXVkaW9Tb3VyY2VQcm92aWRlciogc291cmNlUHJvdmlkZXIsIGZsb2F0KiBkZXN0
aW5hdAogICAgICAgICAgICAgaW50IHNvdXJjZUluZGV4SSA9IHN0YXRpY19jYXN0PGludD4obV92
aXJ0dWFsU291cmNlSW5kZXgpOwogICAgICAgICAgICAgZG91YmxlIHN1YnNhbXBsZVJlbWFpbmRl
ciA9IG1fdmlydHVhbFNvdXJjZUluZGV4IC0gc291cmNlSW5kZXhJOwogCi0gICAgICAgICAgICBk
b3VibGUgdmlydHVhbE9mZnNldEluZGV4ID0gc3Vic2FtcGxlUmVtYWluZGVyICogbV9udW1iZXJP
Zktlcm5lbE9mZnNldHM7CisgICAgICAgICAgICBkb3VibGUgdmlydHVhbE9mZnNldEluZGV4ID0g
c3Vic2FtcGxlUmVtYWluZGVyICogbnVtYmVyT2ZLZXJuZWxPZmZzZXRzOwogICAgICAgICAgICAg
aW50IG9mZnNldEluZGV4ID0gc3RhdGljX2Nhc3Q8aW50Pih2aXJ0dWFsT2Zmc2V0SW5kZXgpOwog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBmbG9hdCogazEgPSBtX2tlcm5lbFN0b3JhZ2UuZGF0
YSgpICsgb2Zmc2V0SW5kZXggKiBtX2tlcm5lbFNpemU7Ci0gICAgICAgICAgICBmbG9hdCogazIg
PSBrMSArIG1fa2VybmVsU2l6ZTsKKyAgICAgICAgICAgIGZsb2F0KiBrMSA9IG1fa2VybmVsU3Rv
cmFnZS5kYXRhKCkgKyBvZmZzZXRJbmRleCAqIGtlcm5lbFNpemU7CisgICAgICAgICAgICBmbG9h
dCogazIgPSBrMSArIGtlcm5lbFNpemU7CiAKICAgICAgICAgICAgIC8vIEluaXRpYWxpemUgaW5w
dXQgcG9pbnRlciBiYXNlZCBvbiBxdWFudGl6ZWQgbV92aXJ0dWFsU291cmNlSW5kZXguCi0gICAg
ICAgICAgICBmbG9hdCogaW5wdXRQID0gcjEgKyBzb3VyY2VJbmRleEk7CisgICAgICAgICAgICBm
bG9hdCogaW5wdXRQID0gbV9yMSArIHNvdXJjZUluZGV4STsKIAogICAgICAgICAgICAgLy8gV2Un
bGwgY29tcHV0ZSAiY29udm9sdXRpb25zIiBmb3IgdGhlIHR3byBrZXJuZWxzIHdoaWNoIHN0cmFk
ZGxlIG1fdmlydHVhbFNvdXJjZUluZGV4CiAgICAgICAgICAgICBmbG9hdCBzdW0xID0gMDsKQEAg
LTI0OSw3ICszMDIsNyBAQCB2b2lkIFNpbmNSZXNhbXBsZXI6OnByb2Nlc3MoQXVkaW9Tb3VyY2VQ
cm92aWRlciogc291cmNlUHJvdmlkZXIsIGZsb2F0KiBkZXN0aW5hdAogICAgICAgICAgICAgZG91
YmxlIGtlcm5lbEludGVycG9sYXRpb25GYWN0b3IgPSB2aXJ0dWFsT2Zmc2V0SW5kZXggLSBvZmZz
ZXRJbmRleDsKIAogICAgICAgICAgICAgLy8gR2VuZXJhdGUgYSBzaW5nbGUgb3V0cHV0IHNhbXBs
ZS4gCi0gICAgICAgICAgICBpbnQgbiA9IG1fa2VybmVsU2l6ZTsKKyAgICAgICAgICAgIGludCBu
ID0ga2VybmVsU2l6ZTsKIAogI2RlZmluZSBDT05WT0xWRV9PTkVfU0FNUExFICAgICAgXAogICAg
ICAgICAgICAgaW5wdXQgPSAqaW5wdXRQKys7ICAgXApAQCAtNDU1LDE2ICs1MDgsMjAgQEAgdm9p
ZCBTaW5jUmVzYW1wbGVyOjpwcm9jZXNzKEF1ZGlvU291cmNlUHJvdmlkZXIqIHNvdXJjZVByb3Zp
ZGVyLCBmbG9hdCogZGVzdGluYXQKICAgICAgICAgfQogCiAgICAgICAgIC8vIFdyYXAgYmFjayBh
cm91bmQgdG8gdGhlIHN0YXJ0LgorICAgICAgICBBU1NFUlQobV92aXJ0dWFsU291cmNlSW5kZXgg
Pj0gbV9ibG9ja1NpemUpOwogICAgICAgICBtX3ZpcnR1YWxTb3VyY2VJbmRleCAtPSBtX2Jsb2Nr
U2l6ZTsKIAotICAgICAgICAvLyBTdGVwICgzKSBDb3B5IHIzIHRvIHIxIGFuZCByNCB0byByMi4K
KyAgICAgICAgLy8gU3RlcCAoMykgQ29weSByMyB0byByMS4KICAgICAgICAgLy8gVGhpcyB3cmFw
cyB0aGUgbGFzdCBpbnB1dCBmcmFtZXMgYmFjayB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4K
LSAgICAgICAgbWVtY3B5KHIxLCByMywgc2l6ZW9mKGZsb2F0KSAqIChtX2tlcm5lbFNpemUgLyAy
KSk7Ci0gICAgICAgIG1lbWNweShyMiwgcjQsIHNpemVvZihmbG9hdCkgKiAobV9rZXJuZWxTaXpl
IC8gMikpOworICAgICAgICBtZW1jcHkobV9yMSwgbV9yMywgc2l6ZW9mKGZsb2F0KSAqIGtlcm5l
bFNpemUpOworCisgICAgICAgIC8vIFN0ZXAgKDQpIC0tIFJlaW5pdGlhbGl6ZSByZWdpb25zIGlm
IG5lY2Vzc2FyeS4KKyAgICAgICAgaWYgKG1fcjAgPT0gbV9yMikKKyAgICAgICAgICAgIHVwZGF0
ZVJlZ2lvbnModHJ1ZSk7CiAKLSAgICAgICAgLy8gU3RlcCAoNCkKKyAgICAgICAgLy8gU3RlcCAo
NSkKICAgICAgICAgLy8gUmVmcmVzaCB0aGUgYnVmZmVyIHdpdGggbW9yZSBpbnB1dC4KLSAgICAg
ICAgY29uc3VtZVNvdXJjZShyNSwgbV9ibG9ja1NpemUpOworICAgICAgICBjb25zdW1lU291cmNl
KG1fcjAsIG1fcmVxdWVzdEZyYW1lcyk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmgKaW5kZXggYjE2ZWI1MTMyNTg4ZGI1ZjFhOTE4
NTU2MGNkZTk3ZDgxZGM0ZGEyNS4uOTNiZjA0ZDkwZjAyYjI3Yzc5NTllMWI5M2IzNjc0MmRkZmQ5
N2M2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2Ft
cGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIu
aApAQCAtMzksMTEgKzM5LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2luY1Jl
c2FtcGxlciBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6ICAg
CitwdWJsaWM6CiAgICAgLy8gc2NhbGVGYWN0b3IgPT0gc291cmNlU2FtcGxlUmF0ZSAvIGRlc3Rp
bmF0aW9uU2FtcGxlUmF0ZQotICAgIC8vIGtlcm5lbFNpemUgY2FuIGJlIGFkanVzdGVkIGZvciBx
dWFsaXR5IChoaWdoZXIgaXMgYmV0dGVyKQotICAgIC8vIG51bWJlck9mS2VybmVsT2Zmc2V0cyBp
cyB1c2VkIGZvciBpbnRlcnBvbGF0aW9uIGFuZCBpcyB0aGUgbnVtYmVyIG9mIHN1Yi1zYW1wbGUg
a2VybmVsIHNoaWZ0cy4KLSAgICBTaW5jUmVzYW1wbGVyKGRvdWJsZSBzY2FsZUZhY3RvciwgdW5z
aWduZWQga2VybmVsU2l6ZSA9IDMyLCB1bnNpZ25lZCBudW1iZXJPZktlcm5lbE9mZnNldHMgPSAz
Mik7CisgICAgLy8gcmVxdWVzdEZyYW1lcyBjb250cm9scyB0aGUgc2l6ZSBpbiBmcmFtZXMgb2Yg
dGhlIGJ1ZmZlciByZXF1ZXN0ZWQgYnkgZWFjaCBwcm92aWRlSW5wdXQoKSBjYWxsLgorICAgIFNp
bmNSZXNhbXBsZXIoZG91YmxlIHNjYWxlRmFjdG9yLCBPcHRpb25hbDx1bnNpZ25lZD4gcmVxdWVz
dEZyYW1lcyA9IFdURjo6bnVsbG9wdCk7CiAgICAgCiAgICAgLy8gUHJvY2Vzc2VzIG51bWJlck9m
U291cmNlRnJhbWVzIGZyb20gc291cmNlIHRvIHByb2R1Y2UgbnVtYmVyT2ZTb3VyY2VGcmFtZXMg
LyBzY2FsZUZhY3RvciBmcmFtZXMgaW4gZGVzdGluYXRpb24uCiAgICAgdm9pZCBwcm9jZXNzKGNv
bnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgbnVtYmVyT2ZT
b3VyY2VGcmFtZXMpOwpAQCAtNTQsMTAgKzUzLDkgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAg
IHZvaWQgaW5pdGlhbGl6ZUtlcm5lbCgpOwogICAgIHZvaWQgY29uc3VtZVNvdXJjZShmbG9hdCog
YnVmZmVyLCB1bnNpZ25lZCBudW1iZXJPZlNvdXJjZUZyYW1lcyk7CisgICAgdm9pZCB1cGRhdGVS
ZWdpb25zKGJvb2wgaXNTZWNvbmRMb2FkKTsKICAgICAKICAgICBkb3VibGUgbV9zY2FsZUZhY3Rv
cjsKLSAgICB1bnNpZ25lZCBtX2tlcm5lbFNpemU7Ci0gICAgdW5zaWduZWQgbV9udW1iZXJPZktl
cm5lbE9mZnNldHM7CiAKICAgICAvLyBtX2tlcm5lbFN0b3JhZ2UgaGFzIG1fbnVtYmVyT2ZLZXJu
ZWxPZmZzZXRzIGtlcm5lbHMgYmFjay10by1iYWNrLCBlYWNoIG9mIHNpemUgbV9rZXJuZWxTaXpl
LgogICAgIC8vIFRoZSBrZXJuZWwgb2Zmc2V0cyBhcmUgc3ViLXNhbXBsZSBzaGlmdHMgb2YgYSB3
aW5kb3dlZCBzaW5jKCkgc2hpZnRlZCBmcm9tIDAuMCB0byAxLjAgc2FtcGxlLgpAQCAtNjUsMjIg
KzYzLDMzIEBAIHByb3RlY3RlZDoKICAgICAKICAgICAvLyBtX3ZpcnR1YWxTb3VyY2VJbmRleCBp
cyBhbiBpbmRleCBvbiB0aGUgc291cmNlIGlucHV0IGJ1ZmZlciB3aXRoIHN1Yi1zYW1wbGUgcHJl
Y2lzaW9uLgogICAgIC8vIEl0IG11c3QgYmUgZG91YmxlIHByZWNpc2lvbiB0byBhdm9pZCBkcmlm
dC4KLSAgICBkb3VibGUgbV92aXJ0dWFsU291cmNlSW5kZXg7CisgICAgZG91YmxlIG1fdmlydHVh
bFNvdXJjZUluZGV4IHsgMCB9OwogICAgIAogICAgIC8vIFRoaXMgaXMgdGhlIG51bWJlciBvZiBk
ZXN0aW5hdGlvbiBmcmFtZXMgd2UgZ2VuZXJhdGUgcGVyIHByb2Nlc3NpbmcgcGFzcyBvbiB0aGUg
YnVmZmVyLgotICAgIHVuc2lnbmVkIG1fYmxvY2tTaXplOworICAgIHVuc2lnbmVkIG1fcmVxdWVz
dEZyYW1lczsKKworICAgIC8vIFRoZSBudW1iZXIgb2Ygc291cmNlIGZyYW1lcyBwcm9jZXNzZWQg
cGVyIHBhc3MuCisgICAgdW5zaWduZWQgbV9ibG9ja1NpemUgeyAwIH07CiAKICAgICAvLyBTb3Vy
Y2UgaXMgY29waWVkIGludG8gdGhpcyBidWZmZXIgZm9yIGVhY2ggcHJvY2Vzc2luZyBwYXNzLgog
ICAgIEF1ZGlvRmxvYXRBcnJheSBtX2lucHV0QnVmZmVyOwogCi0gICAgY29uc3QgZmxvYXQqIG1f
c291cmNlOwotICAgIHVuc2lnbmVkIG1fc291cmNlRnJhbWVzQXZhaWxhYmxlOworICAgIC8vIFBv
aW50ZXJzIHRvIHRoZSB2YXJpb3VzIHJlZ2lvbnMgaW5zaWRlIHxtX2lucHV0QnVmZmVyfC4gU2Vl
IHRoZSBkaWFncmFtIGF0CisgICAgLy8gdGhlIHRvcCBvZiB0aGUgLmNwcCBmaWxlIGZvciBtb3Jl
IGluZm9ybWF0aW9uLgorICAgIGZsb2F0KiBtX3IwIHsgbnVsbHB0ciB9OworICAgIGZsb2F0KiBj
b25zdCBtX3IxIHsgbnVsbHB0ciB9OworICAgIGZsb2F0KiBjb25zdCBtX3IyIHsgbnVsbHB0ciB9
OworICAgIGZsb2F0KiBtX3IzIHsgbnVsbHB0ciB9OworICAgIGZsb2F0KiBtX3I0IHsgbnVsbHB0
ciB9OworCisgICAgY29uc3QgZmxvYXQqIG1fc291cmNlIHsgbnVsbHB0ciB9OworICAgIHVuc2ln
bmVkIG1fc291cmNlRnJhbWVzQXZhaWxhYmxlIHsgMCB9OwogICAgIAogICAgIC8vIG1fc291cmNl
UHJvdmlkZXIgaXMgdXNlZCB0byBwcm92aWRlIHRoZSBhdWRpbyBpbnB1dCBzdHJlYW0gdG8gdGhl
IHJlc2FtcGxlci4KLSAgICBBdWRpb1NvdXJjZVByb3ZpZGVyKiBtX3NvdXJjZVByb3ZpZGVyOyAg
ICAKKyAgICBBdWRpb1NvdXJjZVByb3ZpZGVyKiBtX3NvdXJjZVByb3ZpZGVyIHsgbnVsbHB0ciB9
OwogCiAgICAgLy8gVGhlIGJ1ZmZlciBpcyBwcmltZWQgb25jZSBhdCB0aGUgdmVyeSBiZWdpbm5p
bmcgb2YgcHJvY2Vzc2luZy4KLSAgICBib29sIG1faXNCdWZmZXJQcmltZWQ7CisgICAgYm9vbCBt
X2lzQnVmZmVyUHJpbWVkIHsgZmFsc2UgfTsKIAogICAgIFJlZlB0cjxBdWRpb0J1cz4gbV9pbnRl
cm5hbEJ1czsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcAppbmRleCBhZTYzNTBmYzExYTQ2
OTQ3OGU4MGMwYmZjMzM3YzIwOGI4MzkzZTRlLi43NzVkNjJkZThhZGU3OTk4MzdiNDA1YzlhNDE5
NjgyNTRlZjVkMjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKQEAgLTI5LDEzICsyOSwx
NiBAQAogI2lmIEVOQUJMRShXRUJfQVVESU8pCiAKICNpbmNsdWRlICJBdWRpb0J1cy5oIgotI2lu
Y2x1ZGUgIkF1ZGlvSU9DYWxsYmFjay5oIgogI2luY2x1ZGUgIkF1ZGlvU2Vzc2lvbi5oIgogI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJNdWx0aUNoYW5uZWxSZXNhbXBsZXIuaCIKKyNp
bmNsdWRlICJQdXNoUHVsbEZJRk8uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jb25zdCBp
bnQga1JlbmRlckJ1ZmZlclNpemUgPSAxMjg7Citjb25zdGV4cHIgc2l6ZV90IGtSZW5kZXJCdWZm
ZXJTaXplID0gMTI4OworCitjb25zdGV4cHIgc2l6ZV90IGZpZm9TaXplID0gOTYgKiBrUmVuZGVy
QnVmZmVyU2l6ZTsKIAogQ3JlYXRlQXVkaW9EZXN0aW5hdGlvbkNvY29hT3ZlcnJpZGUgQXVkaW9E
ZXN0aW5hdGlvbkNvY29hOjpjcmVhdGVPdmVycmlkZSA9IG51bGxwdHI7CiAKQEAgLTY4LDE0ICs3
MSwyNCBAQCB1bnNpZ25lZCBsb25nIEF1ZGlvRGVzdGluYXRpb246Om1heENoYW5uZWxDb3VudCgp
CiAgICAgcmV0dXJuIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLm1heGltdW1OdW1iZXJP
Zk91dHB1dENoYW5uZWxzKCk7CiB9CiAKKy8vIEZJWE1FOiBXZSBzaG91bGQgbm90IGJlIGhhcmRj
b2RpbmcgdGhlIG51bWJlciBvZiBpbnB1dCBjaGFubmVscy4KK2NvbnN0ZXhwciB1bnNpZ25lZCBs
ZWdhY3lOdW1iZXJPZk91dHB1dENoYW5uZWxzIHsgMiB9OworCiBBdWRpb0Rlc3RpbmF0aW9uQ29j
b2E6OkF1ZGlvRGVzdGluYXRpb25Db2NvYShBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLCBmbG9h
dCBzYW1wbGVSYXRlKQogICAgIDogbV9vdXRwdXRVbml0KDApCiAgICAgLCBtX2NhbGxiYWNrKGNh
bGxiYWNrKQotICAgICwgbV9yZW5kZXJCdXMoQXVkaW9CdXM6OmNyZWF0ZSgyLCBrUmVuZGVyQnVm
ZmVyU2l6ZSwgZmFsc2UpLnJlbGVhc2VOb25OdWxsKCkpCi0gICAgLCBtX3NwYXJlQnVzKEF1ZGlv
QnVzOjpjcmVhdGUoMiwga1JlbmRlckJ1ZmZlclNpemUsIHRydWUpLnJlbGVhc2VOb25OdWxsKCkp
Ci0gICAgLCBtX3NhbXBsZVJhdGUoc2FtcGxlUmF0ZSkKKyAgICAsIG1fb3V0cHV0QnVzKEF1ZGlv
QnVzOjpjcmVhdGUobGVnYWN5TnVtYmVyT2ZPdXRwdXRDaGFubmVscywga1JlbmRlckJ1ZmZlclNp
emUsIGZhbHNlKS5yZWxlYXNlTm9uTnVsbCgpKQorICAgICwgbV9yZW5kZXJCdXMoQXVkaW9CdXM6
OmNyZWF0ZShsZWdhY3lOdW1iZXJPZk91dHB1dENoYW5uZWxzLCBrUmVuZGVyQnVmZmVyU2l6ZSku
cmVsZWFzZU5vbk51bGwoKSkKKyAgICAsIG1fZmlmbyhtYWtlVW5pcXVlUmVmPFB1c2hQdWxsRklG
Tz4obGVnYWN5TnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmlmb1NpemUpKQorICAgICwgbV9jb250
ZXh0U2FtcGxlUmF0ZShzYW1wbGVSYXRlKQogewogICAgIGNvbmZpZ3VyZSgpOworCisgICAgYXV0
byBoYXJkd2FyZVNhbXBsZVJhdGUgPSB0aGlzLT5oYXJkd2FyZVNhbXBsZVJhdGUoKTsKKyAgICBp
ZiAoc2FtcGxlUmF0ZSAhPSBoYXJkd2FyZVNhbXBsZVJhdGUpIHsKKyAgICAgICAgZG91YmxlIHNj
YWxlRmFjdG9yID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihzYW1wbGVSYXRlKSAvIGhhcmR3YXJlU2Ft
cGxlUmF0ZTsKKyAgICAgICAgbV9yZXNhbXBsZXIgPSBtYWtlVW5pcXVlPE11bHRpQ2hhbm5lbFJl
c2FtcGxlcj4oc2NhbGVGYWN0b3IsIGxlZ2FjeU51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGtSZW5k
ZXJCdWZmZXJTaXplKTsKKyAgICB9CiB9CiAKIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6fkF1ZGlv
RGVzdGluYXRpb25Db2NvYSgpCkBAIC0xMTYsMTEgKzEyOSwxMSBAQCB2b2lkIEF1ZGlvRGVzdGlu
YXRpb25Db2NvYTo6c2V0SXNQbGF5aW5nKGJvb2wgaXNQbGF5aW5nKQogICAgIG1fY2FsbGJhY2su
aXNQbGF5aW5nRGlkQ2hhbmdlKCk7CiB9CiAKLXZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpz
ZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9u
JiBzdHJlYW1Gb3JtYXQsIGZsb2F0IHNhbXBsZVJhdGUpCit2b2lkIEF1ZGlvRGVzdGluYXRpb25D
b2NvYTo6c2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKEF1ZGlvU3RyZWFtQmFzaWNEZXNj
cmlwdGlvbiYgc3RyZWFtRm9ybWF0KQogewogICAgIGNvbnN0IGludCBieXRlc1BlckZsb2F0ID0g
c2l6ZW9mKEZsb2F0MzIpOwogICAgIGNvbnN0IGludCBiaXRzUGVyQnl0ZSA9IDg7Ci0gICAgc3Ry
ZWFtRm9ybWF0Lm1TYW1wbGVSYXRlID0gc2FtcGxlUmF0ZTsKKyAgICBzdHJlYW1Gb3JtYXQubVNh
bXBsZVJhdGUgPSBoYXJkd2FyZVNhbXBsZVJhdGUoKTsKICAgICBzdHJlYW1Gb3JtYXQubUZvcm1h
dElEID0ga0F1ZGlvRm9ybWF0TGluZWFyUENNOwogICAgIHN0cmVhbUZvcm1hdC5tRm9ybWF0Rmxh
Z3MgPSBrQXVkaW9Gb3JtYXRGbGFnc05hdGl2ZUZsb2F0UGFja2VkIHwga0F1ZGlvRm9ybWF0Rmxh
Z0lzTm9uSW50ZXJsZWF2ZWQ7CiAgICAgc3RyZWFtRm9ybWF0Lm1CeXRlc1BlclBhY2tldCA9IGJ5
dGVzUGVyRmxvYXQ7CkBAIC0xNDMsNDQgKzE1NiwzMSBAQCBzdGF0aWMgdm9pZCBhc3NpZ25BdWRp
b0J1ZmZlcnNUb0J1cyhBdWRpb0J1ZmZlciogYnVmZmVycywgQXVkaW9CdXMmIGJ1cywgVUludDMy
CiAvLyBQdWxscyBvbiBvdXIgcHJvdmlkZXIgdG8gZ2V0IHJlbmRlcmVkIGF1ZGlvIHN0cmVhbS4K
IE9TU3RhdHVzIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6cmVuZGVyKGNvbnN0IEF1ZGlvVGltZVN0
YW1wKiB0aW1lc3RhbXAsIFVJbnQzMiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0KiBp
b0RhdGEpCiB7Ci0gICAgQXVkaW9JT1Bvc2l0aW9uIG91dHB1dFRpbWVzdGFtcDsKKyAgICBpZiAo
bV9maWZvLT5sZW5ndGgoKSA8IG51bWJlck9mRnJhbWVzKQorICAgICAgICByZXR1cm4gbm9FcnI7
CisKICAgICBpZiAodGltZXN0YW1wKSB7Ci0gICAgICAgIG91dHB1dFRpbWVzdGFtcCA9IHsKLSAg
ICAgICAgICAgIFNlY29uZHMgeyB0aW1lc3RhbXAtPm1TYW1wbGVUaW1lIC8gbV9zYW1wbGVSYXRl
IH0sCisgICAgICAgIG1fb3V0cHV0VGltZXN0YW1wID0geworICAgICAgICAgICAgU2Vjb25kcyB7
IHRpbWVzdGFtcC0+bVNhbXBsZVRpbWUgLyBzYW1wbGVSYXRlKCkgfSwKICAgICAgICAgICAgIE1v
bm90b25pY1RpbWU6OmZyb21NYWNoQWJzb2x1dGVUaW1lKHRpbWVzdGFtcC0+bUhvc3RUaW1lKQog
ICAgICAgICB9OwotICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgbV9vdXRwdXRUaW1lc3RhbXAg
PSBBdWRpb0lPUG9zaXRpb24geyB9OworCiAgICAgYXV0byogYnVmZmVycyA9IGlvRGF0YS0+bUJ1
ZmZlcnM7CiAgICAgVUludDMyIG51bWJlck9mQnVmZmVycyA9IGlvRGF0YS0+bU51bWJlckJ1ZmZl
cnM7Ci0gICAgVUludDMyIGZyYW1lc1JlbWFpbmluZyA9IG51bWJlck9mRnJhbWVzOwotICAgIFVJ
bnQzMiBmcmFtZU9mZnNldCA9IDA7Ci0gICAgd2hpbGUgKGZyYW1lc1JlbWFpbmluZyA+IDApIHsK
LSAgICAgICAgaWYgKG1fc3RhcnRTcGFyZUZyYW1lIDwgbV9lbmRTcGFyZUZyYW1lKSB7Ci0gICAg
ICAgICAgICBBU1NFUlQobV9zdGFydFNwYXJlRnJhbWUgPCBtX2VuZFNwYXJlRnJhbWUpOwotICAg
ICAgICAgICAgVUludDMyIGZyYW1lc1RoaXNUaW1lID0gc3RkOjptaW48VUludDMyPihtX2VuZFNw
YXJlRnJhbWUgLSBtX3N0YXJ0U3BhcmVGcmFtZSwgbnVtYmVyT2ZGcmFtZXMpOwotICAgICAgICAg
ICAgYXNzaWduQXVkaW9CdWZmZXJzVG9CdXMoYnVmZmVycywgbV9yZW5kZXJCdXMuZ2V0KCksIG51
bWJlck9mQnVmZmVycywgbnVtYmVyT2ZGcmFtZXMsIGZyYW1lT2Zmc2V0LCBmcmFtZXNUaGlzVGlt
ZSk7Ci0gICAgICAgICAgICBtX3JlbmRlckJ1cy0+Y29weUZyb21SYW5nZShtX3NwYXJlQnVzLmdl
dCgpLCBtX3N0YXJ0U3BhcmVGcmFtZSwgbV9lbmRTcGFyZUZyYW1lKTsKLSAgICAgICAgICAgIHBy
b2Nlc3NCdXNBZnRlclJlbmRlcihtX3JlbmRlckJ1cy5nZXQoKSwgZnJhbWVzVGhpc1RpbWUpOwot
ICAgICAgICAgICAgZnJhbWVPZmZzZXQgKz0gZnJhbWVzVGhpc1RpbWU7Ci0gICAgICAgICAgICBm
cmFtZXNSZW1haW5pbmcgLT0gZnJhbWVzVGhpc1RpbWU7Ci0gICAgICAgICAgICBtX3N0YXJ0U3Bh
cmVGcmFtZSArPSBmcmFtZXNUaGlzVGltZTsKLSAgICAgICAgfQotCi0gICAgICAgIFVJbnQzMiBm
cmFtZXNUaGlzVGltZSA9IHN0ZDo6bWluPFVJbnQzMj4oa1JlbmRlckJ1ZmZlclNpemUsIGZyYW1l
c1JlbWFpbmluZyk7Ci0gICAgICAgIGFzc2lnbkF1ZGlvQnVmZmVyc1RvQnVzKGJ1ZmZlcnMsIG1f
cmVuZGVyQnVzLmdldCgpLCBudW1iZXJPZkJ1ZmZlcnMsIG51bWJlck9mRnJhbWVzLCBmcmFtZU9m
ZnNldCwgZnJhbWVzVGhpc1RpbWUpOwotCi0gICAgICAgIGlmICghZnJhbWVzVGhpc1RpbWUpCi0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKGZyYW1lc1RoaXNUaW1lIDwga1JlbmRlckJ1
ZmZlclNpemUpIHsKLSAgICAgICAgICAgIG1fY2FsbGJhY2sucmVuZGVyKDAsIG1fc3BhcmVCdXMu
cHRyKCksIGtSZW5kZXJCdWZmZXJTaXplLCBvdXRwdXRUaW1lc3RhbXApOwotICAgICAgICAgICAg
bV9yZW5kZXJCdXMtPmNvcHlGcm9tUmFuZ2UobV9zcGFyZUJ1cy5nZXQoKSwgMCwgZnJhbWVzVGhp
c1RpbWUpOwotICAgICAgICAgICAgbV9zdGFydFNwYXJlRnJhbWUgPSBmcmFtZXNUaGlzVGltZTsK
LSAgICAgICAgICAgIG1fZW5kU3BhcmVGcmFtZSA9IGtSZW5kZXJCdWZmZXJTaXplOwotICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgIG1fY2FsbGJhY2sucmVuZGVyKDAsIG1fcmVuZGVyQnVzLnB0
cigpLCBmcmFtZXNUaGlzVGltZSwgb3V0cHV0VGltZXN0YW1wKTsKLSAgICAgICAgcHJvY2Vzc0J1
c0FmdGVyUmVuZGVyKG1fcmVuZGVyQnVzLmdldCgpLCBmcmFtZXNUaGlzVGltZSk7Ci0gICAgICAg
IGZyYW1lT2Zmc2V0ICs9IGZyYW1lc1RoaXNUaW1lOwotICAgICAgICBmcmFtZXNSZW1haW5pbmcg
LT0gZnJhbWVzVGhpc1RpbWU7CisKKyAgICAvLyBBc3NvY2lhdGUgdGhlIGRlc3RpbmF0aW9uIGRh
dGEgYXJyYXkgd2l0aCB0aGUgb3V0cHV0IGJ1cyB0aGVuIGZpbGwgdGhlIEZJRk8uCisgICAgYXNz
aWduQXVkaW9CdWZmZXJzVG9CdXMoYnVmZmVycywgbV9vdXRwdXRCdXMuZ2V0KCksIG51bWJlck9m
QnVmZmVycywgbnVtYmVyT2ZGcmFtZXMsIDAsIG51bWJlck9mRnJhbWVzKTsKKyAgICBzaXplX3Qg
ZnJhbWVzVG9SZW5kZXIgPSBtX2ZpZm8tPnB1bGwobV9vdXRwdXRCdXMucHRyKCksIG51bWJlck9m
RnJhbWVzKTsKKworICAgIGZvciAoc2l6ZV90IHB1c2hlZEZyYW1lcyA9IDA7IHB1c2hlZEZyYW1l
cyA8IGZyYW1lc1RvUmVuZGVyOyBwdXNoZWRGcmFtZXMgKz0ga1JlbmRlckJ1ZmZlclNpemUpIHsK
KyAgICAgICAgaWYgKG1fcmVzYW1wbGVyKQorICAgICAgICAgICAgbV9yZXNhbXBsZXItPnByb2Nl
c3ModGhpcywgbV9yZW5kZXJCdXMucHRyKCksIGtSZW5kZXJCdWZmZXJTaXplKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgbV9jYWxsYmFjay5yZW5kZXIoMCwgbV9yZW5kZXJCdXMucHRyKCks
IGtSZW5kZXJCdWZmZXJTaXplLCBtX291dHB1dFRpbWVzdGFtcCk7CisKKyAgICAgICAgbV9maWZv
LT5wdXNoKG1fcmVuZGVyQnVzLnB0cigpKTsKICAgICB9CiAKICAgICByZXR1cm4gbm9FcnI7CkBA
IC0xOTMsNiArMTkzLDEyIEBAIE9TU3RhdHVzIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6aW5wdXRQ
cm9jKHZvaWQqIHVzZXJEYXRhLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25GCiAgICAgcmV0dXJuIGF1
ZGlvT3V0cHV0LT5yZW5kZXIodGltZXN0YW1wLCBudW1iZXJPZkZyYW1lcywgaW9EYXRhKTsKIH0K
IAordm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnByb3ZpZGVJbnB1dChBdWRpb0J1cyogYnVz
LCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQoreworICAgIEFTU0VSVF9VTlVTRUQoZnJhbWVzVG9Q
cm9jZXNzLCBmcmFtZXNUb1Byb2Nlc3MgPT0ga1JlbmRlckJ1ZmZlclNpemUpOworICAgIG1fY2Fs
bGJhY2sucmVuZGVyKDAsIGJ1cywga1JlbmRlckJ1ZmZlclNpemUsIG1fb3V0cHV0VGltZXN0YW1w
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9B
VURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1
ZGlvRGVzdGluYXRpb25Db2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29j
b2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmgKaW5kZXggMzkyODhlYTlmYjMyNGJiYTMxZDE3YzIz
NjA4ZTExNWNhY2MwMzFhZS4uYWZiNjMwOTI3NjU2MDA0ZThlYTk1MWNmMTM2YTEzMDc3NGUyMzU2
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9E
ZXN0aW5hdGlvbkNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29j
b2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmgKQEAgLTI4LDE3ICsyOCwyMiBAQAogI2lmIEVOQUJM
RShXRUJfQVVESU8pCiAKICNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uLmgiCisjaW5jbHVkZSAi
QXVkaW9JT0NhbGxiYWNrLmgiCisjaW5jbHVkZSAiQXVkaW9Tb3VyY2VQcm92aWRlci5oIgogI2lu
Y2x1ZGUgPEF1ZGlvVW5pdC9BdWRpb1VuaXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEF1ZGlvQnVzOworY2xhc3MgTXVsdGlDaGFubmVsUmVzYW1wbGVyOworY2xhc3MgUHVzaFB1bGxG
SUZPOwogCiB1c2luZyBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uQ29jb2FPdmVycmlkZSA9IHN0ZDo6
dW5pcXVlX3B0cjxBdWRpb0Rlc3RpbmF0aW9uPigqKShBdWRpb0lPQ2FsbGJhY2smLCBmbG9hdCBz
YW1wbGVSYXRlKTsKIAogLy8gQW4gQXVkaW9EZXN0aW5hdGlvbiB1c2luZyBDb3JlQXVkaW8ncyBk
ZWZhdWx0IG91dHB1dCBBdWRpb1VuaXQKLWNsYXNzIEF1ZGlvRGVzdGluYXRpb25Db2NvYSA6IHB1
YmxpYyBBdWRpb0Rlc3RpbmF0aW9uIHsKK2NsYXNzIEF1ZGlvRGVzdGluYXRpb25Db2NvYSA6IHB1
YmxpYyBBdWRpb0Rlc3RpbmF0aW9uLCBwdWJsaWMgQXVkaW9Tb3VyY2VQcm92aWRlciB7CiBwdWJs
aWM6CiAgICAgQXVkaW9EZXN0aW5hdGlvbkNvY29hKEF1ZGlvSU9DYWxsYmFjayYsIGZsb2F0IHNh
bXBsZVJhdGUpOwogICAgIHZpcnR1YWwgfkF1ZGlvRGVzdGluYXRpb25Db2NvYSgpOwpAQCAtNDks
MTQgKzU0LDE0IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHNldElzUGxheWluZyhib29sKTsKIAog
ICAgIGJvb2wgaXNQbGF5aW5nKCkgZmluYWwgeyByZXR1cm4gbV9pc1BsYXlpbmc7IH0KLSAgICBm
bG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9Cisg
ICAgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29udGV4dFNhbXBs
ZVJhdGU7IH0KICAgICB1bnNpZ25lZCBmcmFtZXNQZXJCdWZmZXIoKSBjb25zdCBmaW5hbDsKICAg
ICBBdWRpb1VuaXQmIG91dHB1dFVuaXQoKSB7IHJldHVybiBtX291dHB1dFVuaXQ7IH0KICAgICAK
ICAgICAvLyBEZWZhdWx0T3V0cHV0VW5pdCBjYWxsYmFjawogICAgIHN0YXRpYyBPU1N0YXR1cyBp
bnB1dFByb2Modm9pZCogdXNlckRhdGEsIEF1ZGlvVW5pdFJlbmRlckFjdGlvbkZsYWdzKiwgY29u
c3QgQXVkaW9UaW1lU3RhbXAqLCBVSW50MzIgYnVzTnVtYmVyLCBVSW50MzIgbnVtYmVyT2ZGcmFt
ZXMsIEF1ZGlvQnVmZmVyTGlzdCogaW9EYXRhKTsKIAotICAgIHZvaWQgc2V0QXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYsIGZsb2F0IHNhbXBs
ZVJhdGUpOworICAgIHZvaWQgc2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKEF1ZGlvU3Ry
ZWFtQmFzaWNEZXNjcmlwdGlvbiYpOwogCiBwcml2YXRlOgogICAgIHZvaWQgc3RhcnQoKSBvdmVy
cmlkZTsKQEAgLTY0LDYgKzY5LDkgQEAgcHJpdmF0ZToKIAogICAgIGZyaWVuZCBzdGQ6OnVuaXF1
ZV9wdHI8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1ZGlvSU9D
YWxsYmFjayYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkLCB1bnNpZ25lZCwgZmxvYXQpOwogICAg
IAorICAgIC8vIEF1ZGlvU291cmNlUHJvdmlkZXIuCisgICAgdm9pZCBwcm92aWRlSW5wdXQoQXVk
aW9CdXMqLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBmaW5hbDsKKwogICAgIHZvaWQgY29uZmln
dXJlKCk7CiAgICAgdm9pZCBwcm9jZXNzQnVzQWZ0ZXJSZW5kZXIoQXVkaW9CdXMmLCBVSW50MzIg
bnVtYmVyT2ZGcmFtZXMpOwogCkBAIC03MSwxNCArNzksMjIgQEAgcHJpdmF0ZToKIAogICAgIEF1
ZGlvVW5pdCBtX291dHB1dFVuaXQ7CiAgICAgQXVkaW9JT0NhbGxiYWNrJiBtX2NhbGxiYWNrOwor
CisgICAgLy8gVG8gcGFzcyB0aGUgZGF0YSBmcm9tIEZJRk8gdG8gdGhlIGF1ZGlvIGRldmljZSBj
YWxsYmFjay4KKyAgICBSZWY8QXVkaW9CdXM+IG1fb3V0cHV0QnVzOworCisgICAgLy8gVG8gcHVz
aCB0aGUgcmVuZGVyZWQgcmVzdWx0IGZyb20gV2ViQXVkaW8gZ3JhcGggaW50byB0aGUgRklGTy4K
ICAgICBSZWY8QXVkaW9CdXM+IG1fcmVuZGVyQnVzOwotICAgIFJlZjxBdWRpb0J1cz4gbV9zcGFy
ZUJ1czsKIAotICAgIGZsb2F0IG1fc2FtcGxlUmF0ZTsKLSAgICBib29sIG1faXNQbGF5aW5nIHsg
ZmFsc2UgfTsKKyAgICAvLyBSZXNvbHZlcyB0aGUgYnVmZmVyIHNpemUgbWlzbWF0Y2ggYmV0d2Vl
biB0aGUgV2ViQXVkaW8gZW5naW5lIGFuZAorICAgIC8vIHRoZSBjYWxsYmFjayBmdW5jdGlvbiBm
cm9tIHRoZSBhY3R1YWwgYXVkaW8gZGV2aWNlLgorICAgIFVuaXF1ZVJlZjxQdXNoUHVsbEZJRk8+
IG1fZmlmbzsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxNdWx0aUNoYW5uZWxSZXNhbXBsZXI+IG1f
cmVzYW1wbGVyOworICAgIEF1ZGlvSU9Qb3NpdGlvbiBtX291dHB1dFRpbWVzdGFtcDsKIAotICAg
IHVuc2lnbmVkIG1fc3RhcnRTcGFyZUZyYW1lIHsgMCB9OwotICAgIHVuc2lnbmVkIG1fZW5kU3Bh
cmVGcmFtZSB7IDAgfTsKKyAgICBmbG9hdCBtX2NvbnRleHRTYW1wbGVSYXRlOworICAgIGJvb2wg
bV9pc1BsYXlpbmcgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRp
b25JT1MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGlu
YXRpb25JT1MuY3BwCmluZGV4IDM5Mjk1MjM2ZTMwM2UwYzE4NzA1ZmZiZWU1NDZiNDg4YzUyYWJl
ZTUuLmM0NzMzZGU3Zjc1ZGE5YWI2ZDA4N2EyMzFhZDhlYjk4MWRjNjg4OGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlv
bklPUy5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OmNv
bmZpZ3VyZSgpCiAgICAgcmVzdWx0ID0gQXVkaW9Vbml0R2V0UHJvcGVydHkob3V0cHV0VW5pdCgp
LCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVfT3V0cHV0
LCAwLCAodm9pZCopJnN0cmVhbUZvcm1hdCwgJnNpemUpOwogICAgIEFTU0VSVCghcmVzdWx0KTsK
IAotICAgIHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihzdHJlYW1Gb3JtYXQsIHNhbXBs
ZVJhdGUoKSk7CisgICAgc2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKHN0cmVhbUZvcm1h
dCk7CiAKICAgICByZXN1bHQgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShvdXRwdXRVbml0KCksIGtB
dWRpb1VuaXRQcm9wZXJ0eV9TdHJlYW1Gb3JtYXQsIGtBdWRpb1VuaXRTY29wZV9JbnB1dCwgMCwg
KHZvaWQqKSZzdHJlYW1Gb3JtYXQsIHNpemVvZihBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24p
KTsKICAgICBBU1NFUlQoIXJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAKaW5kZXggN2EwMWVhZTA2
ZTI5MDMyZmQwNTk4YTAwZTM0ZGUyMzU3ZDJhNTdhNC4uZmY2OTQzYjM4MDNhMWIyNTUyYjU4ZWMy
NzI1MDE0NWNkOGVhNDhhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcApAQCAtNjcsNyArNjcsNyBAQCB2
b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6Y29uZmlndXJlKCkKIAogICAgIC8vIFNldCBzdHJl
YW0gZm9ybWF0CiAgICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIHN0cmVhbUZvcm1hdDsK
LSAgICBzZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oc3RyZWFtRm9ybWF0LCBzYW1wbGVS
YXRlKCkpOworICAgIHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihzdHJlYW1Gb3JtYXQp
OwogCiAgICAgcmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkob3V0cHV0VW5pdCgpLCBrQXVk
aW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICh2
b2lkKikmc3RyZWFtRm9ybWF0LCBzaXplb2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKSk7
CiAgICAgQVNTRVJUKCFyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlLmgKaW5k
ZXggNTI4ODdlYzIyM2U3MzFiMDk3ZWEwNDYyOGE2MWJjNDc1YzhjYzE2Yy4uNThhMTJhOTExNGY2
ZmZlMmQ0NDc5YjkxZWEwOWI3ZjJkMGUwMzYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURl
dmljZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExB
VEZPUk0oTUFDKQogCiAjaW5jbHVkZSAiQ2FwdHVyZURldmljZS5oIgorI2luY2x1ZGUgPHBhbC9z
cGkvY2YvQ29yZUF1ZGlvU1BJLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9Nb2NrQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcAppbmRleCA4NjNjNGQ1
NGJmOTc4ZDI4ZWI1MTEzNjcyNDAxOGRkMTcxMzM0Y2QzLi44ZTNhZjAzNTM2YzJkM2I3NmI4NjM1
NjhmODc0OTRiNWEzYzFmNGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTW9ja0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKQEAgLTY3LDcgKzY3LDcg
QEAgdm9pZCBNb2NrQXVkaW9EZXN0aW5hdGlvbkNvY29hOjp0aWNrKCkKIHsKICAgICBtX3dvcmtR
dWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHNhbXBsZVJhdGUgPSBzYW1wbGVSYXRlKCksIG51bWJlck9m
RnJhbWVzVG9Qcm9jZXNzID0gbV9udW1iZXJPZkZyYW1lc1RvUHJvY2Vzc10gewogICAgICAgICBB
dWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OwotICAgICAgICBzZXRBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oc3RyZWFtRm9ybWF0LCBzYW1wbGVSYXRlKTsKKyAgICAg
ICAgc2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKHN0cmVhbUZvcm1hdCk7CiAKICAgICAg
ICAgV2ViQXVkaW9CdWZmZXJMaXN0IHdlYkF1ZGlvQnVmZmVyTGlzdCB7IHN0cmVhbUZvcm1hdCwg
bnVtYmVyT2ZGcmFtZXNUb1Byb2Nlc3MgfTsKICAgICAgICAgQXVkaW9EZXN0aW5hdGlvbkNvY29h
OjppbnB1dFByb2ModGhpcywgMCwgMCwgMCwgbnVtYmVyT2ZGcmFtZXNUb1Byb2Nlc3MsIHdlYkF1
ZGlvQnVmZmVyTGlzdC5saXN0KCkpOwo=
</data>
<flag name="commit-queue"
          id="424020"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408578</attachid>
            <date>2020-09-11 18:32:03 -0700</date>
            <delta_ts>2020-09-11 19:05:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216425-20200911183203.patch</filename>
            <type>text/plain</type>
            <size>66397</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2OTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTk4OWVhNTIyNDI0MGRl
ZWVkYTdlYzgzNzVkNzMxMzY0MWQ0MWJkYS4uY2Y1ZWZhOTI4MzQxNjU1Nzg0OTQzYzc1NDcyZDk0
YzcwMmMwNGM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDIwLTA5LTExICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHByb3BlciBzdXBwb3J0
IGZvciBBdWRpb0NvbnRleHRPcHRpb25zLnNhbXBsZVJhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjQyNQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBwcm9wZXIgc3VwcG9ydCBmb3IgQXVkaW9D
b250ZXh0T3B0aW9ucy5zYW1wbGVSYXRlLiBQcmV2aW91c2x5LCBvdXIgQXVkaW9Db250ZXh0IGFs
d2F5cyBydW4KKyAgICAgICAgYXQgdGhlIGhhcmR3YXJlJ3Mgc2FtcGxlUmF0ZSwgbm8gbWF0dGVy
IHdoYXQgdmFsdWUgZm9yIHNldCBmb3IgQXVkaW9Db250ZXh0T3B0aW9ucy5zYW1wbGVSYXRlLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYmFzZWQgb24gdGhlIGZvbGxvd2luZyBDaHJvbWl1bSBj
aGFuZ2VzOgorICAgICAgICAtIGh0dHBzOi8vY2hyb21pdW0tcmV2aWV3Lmdvb2dsZXNvdXJjZS5j
b20vYy9jaHJvbWl1bS9zcmMvKy8xNDgyOTU3CisgICAgICAgIC0gaHR0cHM6Ly9jb2RlcmV2aWV3
LmNocm9taXVtLm9yZy8yNTQ5MDkzMDA5CisgICAgICAgIC0gaHR0cHM6Ly9jb2RlcmV2aWV3LmNo
cm9taXVtLm9yZy8xNDE4OTAzNQorCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0
QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVmYXVsdEF1ZGlv
RGVzdGluYXRpb25Ob2RlOjpjcmVhdGVEZXN0aW5hdGlvbik6CisgICAgICAgIFdoZW4gY3JlYXRp
bmcgYSBBdWRpb0Rlc3RpbmF0aW9uLCBwYXNzIHRoZSByZXF1ZXN0ZWQgQXVkaW9Db250ZXh0IHNh
bXBsZSByYXRlCisgICAgICAgIGluc3RlYWQgb2YgdGhlIGhhcmR3YXJlIHNhbXBsZSByYXRlLgor
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9GSUZPLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmg6IFJlbW92ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vUHVzaFB1bGxGSUZPLmNwcDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vUHVzaFB1bGxGSUZPLmg6IEFkZGVkLgorICAgICAgICBSZXBsYWNlIEF1ZGlv
RklGTyBhbmQgQXVkaW9QdWxsRklGTyB3aXRoIGEgbmV3IFB1c2hQdWxsRklGTyByZXBsYWNlbWVu
dCwgc2ltaWxhcmx5CisgICAgICAgIHRvIHdoYXQgd2FzIGRvbmUgaW4gQ2hyb21pdW0gaW46Cisg
ICAgICAgIC0gaHR0cHM6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8yNTQ5MDkzMDA5CisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TXVsdGlDaGFubmVsUmVzYW1wbGVyOjpNdWx0aUNoYW5uZWxSZXNhbXBsZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2luY1Jlc2FtcGxlcjo6U2luY1Jlc2FtcGxlcik6CisgICAgICAgIChXZWJDb3JlOjpTaW5j
UmVzYW1wbGVyOjp1cGRhdGVSZWdpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbmNSZXNhbXBs
ZXI6OmluaXRpYWxpemVLZXJuZWwpOgorICAgICAgICAoV2ViQ29yZTo6U2luY1Jlc2FtcGxlcjo6
cHJvY2Vzcyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5oOgorICAg
ICAgICBBZGQgcGFyYW1ldGVyIHRvIE11bHRpQ2hhbm5lbFJlc2FtcGxlciAmIFNpbmNSZXNhbXBs
ZXIgdG8gYWxsb3cgdGhlIGNsaWVudCB0byBzcGVjaWZ5CisgICAgICAgIHRoZSBzaXplIG9mIHRo
ZSBidWZmZXIgaW4gZnJhbWVzIHdoZW4gdGhlIHJlc2FtcGxlciBjYWxscyBBdWRpb1NvdXJjZVBy
b3ZpZGVyOjpwcm92aWRlSW5wdXQoKQorICAgICAgICB0byBnZXQgaW5wdXQgZGF0YS4gVGhpcyBp
cyBuZWNlc3NhcnkgYmVjYXVzZSBvdXIgV2ViQXVkaW8gaW1wbGVtZW50YXRpb24gdXNlcyBhIHN0
YXRpYworICAgICAgICBidWZmZXIgc2l6ZSBvZiAxMjggZnJhbWVzLiBUaGlzIGlzIHNpbWlsYXIg
dG8gd2hhdCB3YXMgZG9uZSBpbiBDaHJvbWl1bSBpbjoKKyAgICAgICAgLSBodHRwczovL2NvZGVy
ZXZpZXcuY2hyb21pdW0ub3JnLzE0MTg5MDM1CisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9E
ZXN0aW5hdGlvbkNvY29hOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2EpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpyZW5kZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpwcm92aWRlSW5wdXQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5oOgorICAg
ICAgICAtIEFkb3B0IFB1c2hQdWxsRklGTyB0byByZXNvbHZlIHRoZSBidWZmZXIgc2l6ZSBtaXNt
YXRjaCBiZXR3ZWVuIHRoZSBXZWJBdWRpbyBlbmdpbmUgYW5kCisgICAgICAgICAgdGhlIGNhbGxi
YWNrIGZ1bmN0aW9uIGZyb20gdGhlIGFjdHVhbCBhdWRpbyBkZXZpY2UsIHNpbWlsYXJseSB0byB3
aGF0IHdhcyBkb25lIGluIENocm9taXVtLgorICAgICAgICAtIFdoZW4gdGhlIGNvbnRleHQncyBz
YW1wbGUgcmF0ZSBkaWZmZXJzIGZyb20gdGhlIGhhcmR3YXJlIHNhbXBsZSByYXRlLCBpbnN0YW50
aWF0ZSBhCisgICAgICAgICAgTXVsdGlDaGFubmVsUmVzYW1wbGVyIGFuZCB1c2UgaW4gaW4gcmVu
ZGVyKCkgdG8gZG8gdGhlIHJlc2FtcGxpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9p
b3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3Rp
bmF0aW9uQ29jb2E6OmNvbmZpZ3VyZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1
ZGlvRGVzdGluYXRpb25NYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlv
bkNvY29hOjpjb25maWd1cmUpOgorICAgICAgICBEcm9wIHNhbXBsZVJhdGUgcGFyYW1ldGVyIGFz
IGl0IGlzIG5vIGxvbmdlciBuZWVkZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0F1ZGlvRGVz
dGluYXRpb25Db2NvYTo6dGljayk6CisKIDIwMjAtMDktMTEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBTZXJpYWxpemF0aW9uIHNob3VsZCBoYXZlIGV4Y2Vw
dGlvbiBjaGVja3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCBiMTU5ZTMyZjEx
YmE3OTRmMWZlMTA3NThkOTYwMGVlNmQwODk0MjhlLi40MjNkY2EzMGVkYjQ0MDQwYzE0ZTY5MzE4
NDFkMGYyM2EwOGVjZGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCkBAIC04Miwx
MCArODIsNyBAQCB2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6dW5pbml0aWFsaXpl
KCkKIAogdm9pZCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZURlc3RpbmF0aW9u
KCkKIHsKLSAgICBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUgPSBBdWRpb0Rlc3RpbmF0aW9uOjpo
YXJkd2FyZVNhbXBsZVJhdGUoKTsKLSAgICBMT0coV2ViQXVkaW8sICI+Pj4+IGhhcmR3YXJlU2Ft
cGxlUmF0ZSA9ICVmXG4iLCBoYXJkd2FyZVNhbXBsZVJhdGUpOwotCi0gICAgbV9kZXN0aW5hdGlv
biA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5tZWRpYVN0cmF0ZWd5KCkuY3JlYXRlQXVkaW9EZXN0
aW5hdGlvbigqdGhpcywgbV9pbnB1dERldmljZUlkLCBtX251bWJlck9mSW5wdXRDaGFubmVscywg
Y2hhbm5lbENvdW50KCksIGhhcmR3YXJlU2FtcGxlUmF0ZSk7CisgICAgbV9kZXN0aW5hdGlvbiA9
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5tZWRpYVN0cmF0ZWd5KCkuY3JlYXRlQXVkaW9EZXN0aW5h
dGlvbigqdGhpcywgbV9pbnB1dERldmljZUlkLCBtX251bWJlck9mSW5wdXRDaGFubmVscywgY2hh
bm5lbENvdW50KCksIG1fc2FtcGxlUmF0ZSk7CiB9CiAKIHZvaWQgRGVmYXVsdEF1ZGlvRGVzdGlu
YXRpb25Ob2RlOjplbmFibGVJbnB1dChjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CmluZGV4IDA4NzIxNjA2NjIwNmZlY2UwMWEwMGVlNWI0MzY1NDIyOWIyYWE5ZTQuLjMw
MjkxYjEyZTE3OGYzZDljMzE3MzI5NzkyZjI4Nzk4ZDdkNjc2YWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBA
IC0xNzg4LDkgKzE3ODgsNyBAQCBwbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rpb24uY3Bw
CiBwbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHAKIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5l
bC5jcHAKIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvRFNQS2VybmVsUHJvY2Vzc29yLmNwcAotcGxhdGZv
cm0vYXVkaW8vQXVkaW9GSUZPLmNwcAogcGxhdGZvcm0vYXVkaW8vQXVkaW9IYXJkd2FyZUxpc3Rl
bmVyLmNwcAotcGxhdGZvcm0vYXVkaW8vQXVkaW9QdWxsRklGTy5jcHAKIHBsYXRmb3JtL2F1ZGlv
L0F1ZGlvUmVzYW1wbGVyLmNwcAogcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXJLZXJuZWwu
Y3BwCiBwbGF0Zm9ybS9hdWRpby9BdWRpb1V0aWxpdGllcy5jcHAKQEAgLTE4MTQsNiArMTgxMiw3
IEBAIHBsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHAKIHBsYXRmb3JtL2F1
ZGlvL1Bhbm5lci5jcHAKIHBsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcAog
cGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAorcGxhdGZvcm0v
YXVkaW8vUHVzaFB1bGxGSUZPLmNwcAogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNwcAogcGxhdGZv
cm0vYXVkaW8vUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyLmNwcAogcGxhdGZvcm0vYXVkaW8vUmV2
ZXJiQ29udm9sdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDQ2MzdjZTQ4MmVkNDFjYzgyZTExNjQ3ZDZjY2NiNTA1ODZk
MGVlOTguLmJmMTdkNGY5MTVhODE2NzFiZjUxZGJkMGU4YTMxM2RlOTg1ZGZlMWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI1
MjYsNiArMjUyNiw3IEBACiAJCTgzQzU3OTVEMURBNUMzMDEwMDZGQUNBOCAvKiBTY3JvbGxUb09w
dGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgz
NTBDM0U3MURBNTlCNjIwMDM1NjQ0NiAvKiBTY3JvbGxUb09wdGlvbnMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4M0QzNUFFQzFDNzE4N0ZBMDBG
NzBENUEgLyogWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNEMzVBRUExQzcxODdFRDAwRjcwRDVBIC8qIFhN
TEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQuaCAqLzsgfTsKIAkJODNEMzVBRjIxQzcxOEQ5MDAwRjcw
RDVBIC8qIEpTWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNEMzVBRjAxQzcxOEQ4NDAwRjcwRDVBIC8qIEpT
WE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5oICovOyB9OworCQk4M0Q1MTFGNjI1MEMxQ0JGMDAy
RURDNTEgLyogUHVzaFB1bGxGSUZPLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4M0Q1MTFGNTI1MEMxQ0E4MDAyRURDNTEgLyogUHVzaFB1bGxGSUZPLmgg
Ki87IH07CiAJCTgzREI5RTBGMjREQTE5NDkwMDM3QjQ2OCAvKiBCaXF1YWRGaWx0ZXJUeXBlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0RCOUUwQzI0
REExOEI1MDAzN0I0NjggLyogQmlxdWFkRmlsdGVyVHlwZS5oICovOyB9OwogCQk4M0RCOUUxMDI0
REExOTU3MDAzN0I0NjggLyogQmlxdWFkRmlsdGVyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNEQjlFMEUyNERBMThCNjAwMzdCNDY4IC8q
IEJpcXVhZEZpbHRlck9wdGlvbnMuaCAqLzsgfTsKIAkJODNFMzU5QTIxQkIxMDMxRDAwMkNFQjk4
IC8qIEpTSFRNTFRpbWVFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4M0UzNTlBMDFCQjEwMzFEMDAyQ0VCOTggLyogSlNIVE1MVGltZUVsZW1l
bnQuaCAqLzsgfTsKQEAgLTEwNzA3LDYgKzEwNzA4LDggQEAKIAkJODNEMzVBRUIxQzcxODdFRDAw
RjcwRDVBIC8qIFhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4M0QzNUFFRjFDNzE4RDg0MDBGNzBENUEgLyogSlNYTUxIdHRwUmVxdWVzdEV2
ZW50VGFyZ2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTWE1M
SHR0cFJlcXVlc3RFdmVudFRhcmdldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTgzRDM1QUYwMUM3MThEODQwMEY3MEQ1QSAvKiBKU1hNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNYTUxIdHRwUmVxdWVzdEV2ZW50
VGFyZ2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzRDUxMUYzMjUwQzFDQTgw
MDJFREM1MSAvKiBQdXNoUHVsbEZJRk8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUHVzaFB1bGxGSUZPLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODNENTExRjUyNTBDMUNBODAwMkVEQzUxIC8qIFB1c2hQdWxsRklGTy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQdXNoUHVsbEZJRk8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODNEQjlFMEEyNERBMThCNDAwMzdCNDY4IC8qIEJpcXVhZEZpbHRlclR5cGUuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IEJpcXVhZEZpbHRlclR5cGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4M0RCOUUwQzI0REExOEI1MDAzN0I0NjggLyogQmlxdWFkRmlsdGVyVHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBCaXF1YWRGaWx0ZXJUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTgzREI5RTBEMjREQTE4QjUwMDM3QjQ2OCAvKiBCaXF1YWRGaWx0ZXJPcHRpb25zLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBCaXF1YWRGaWx0ZXJPcHRpb25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTMwMDMzLDYgKzMwMDM2LDggQEAKIAkJCQkwNzBFMDkxODE4NzVFRDkzMDAzQTFEM0MgLyogUGxh
dGZvcm1NZWRpYVNlc3Npb24uaCAqLywKIAkJCQlDREFFOEMwNzE3NDZCOTU3MDA1MzJENzggLyog
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCAqLywKIAkJCQlDREFFOEMwODE3NDZCOTU3
MDA1MzJENzggLyogUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmggKi8sCisJCQkJODNENTEx
RjMyNTBDMUNBODAwMkVEQzUxIC8qIFB1c2hQdWxsRklGTy5jcHAgKi8sCisJCQkJODNENTExRjUy
NTBDMUNBODAwMkVEQzUxIC8qIFB1c2hQdWxsRklGTy5oICovLAogCQkJCUZEMzE2MDZFMTJCMDI2
RjcwMEMxQTM1OSAvKiBSZXZlcmIuY3BwICovLAogCQkJCUZEMzE2MDZGMTJCMDI2RjcwMEMxQTM1
OSAvKiBSZXZlcmIuaCAqLywKIAkJCQlGRDMxNjA3MDEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJi
QWNjdW11bGF0aW9uQnVmZmVyLmNwcCAqLywKQEAgLTMzMjY1LDYgKzMzMjcwLDcgQEAKIAkJCQk1
NzMwM0JFQjIwMDk3RjQwMDAzNTU5NjUgLyogUHVibGljS2V5Q3JlZGVudGlhbFR5cGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTAwODFGRjAwMTZCMEEyRDMwMDhBQUE3QSAvKiBQdWJsaWNTdWZmaXgu
aCBpbiBIZWFkZXJzICovLAogCQkJCTEwRkIwODRCMTRFMTVDN0UwMEEzREI5OCAvKiBQdWJsaWNV
UkxNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk4M0Q1MTFGNjI1MEMxQ0JGMDAyRURDNTEg
LyogUHVzaFB1bGxGSUZPLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NTBBMEJDQTA4NUY2MDM5MDA3
MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNDMUY1OTQxRURG
NjlEMzAwNDEwRDI3IC8qIFF1YWxpZmllZE5hbWVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTE1RTMxRjQxRTBDQjBCNTAwNEIzNzFDIC8qIFF1aWNrTG9vay5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9GSUZPLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMGIzYWE0OTlmNjk4YmI0NDM3ZGJiOTZkZDcyMTU1MGJhMmNjNWZl
Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
MTQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1l
IG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0g
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShXRUJfQVVESU8pCi0KLSNpbmNs
dWRlICJBdWRpb0ZJRk8uaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1BdWRpb0ZJRk86OkF1
ZGlvRklGTyh1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgZmlmb0xlbmd0aCkKLSAg
ICA6IG1fZmlmb0F1ZGlvQnVzKEF1ZGlvQnVzOjpjcmVhdGUobnVtYmVyT2ZDaGFubmVscywgZmlm
b0xlbmd0aCkpCi0gICAgLCBtX2ZpZm9MZW5ndGgoZmlmb0xlbmd0aCkKLSAgICAsIG1fZnJhbWVz
SW5GaWZvKDApCi0gICAgLCBtX3JlYWRJbmRleCgwKQotICAgICwgbV93cml0ZUluZGV4KDApCi17
Ci19Ci0KLXZvaWQgQXVkaW9GSUZPOjpjb25zdW1lKEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwgc2l6
ZV90IGZyYW1lc1RvQ29uc3VtZSkKLXsKLSAgICBib29sIGlzR29vZCA9IGRlc3RpbmF0aW9uICYm
IChmcmFtZXNUb0NvbnN1bWUgPD0gbV9maWZvTGVuZ3RoKSAmJiAoZnJhbWVzVG9Db25zdW1lIDw9
IG1fZnJhbWVzSW5GaWZvKSAmJiAoZGVzdGluYXRpb24tPmxlbmd0aCgpID49IGZyYW1lc1RvQ29u
c3VtZSk7Ci0gICAgQVNTRVJUKGlzR29vZCk7Ci0gICAgaWYgKCFpc0dvb2QpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIC8vIENvcHkgdGhlIHJlcXVlc3RlZCBudW1iZXIgb2Ygc2FtcGxlcyB0byB0
aGUgZGVzdGluYXRpb24uCi0KLSAgICBzaXplX3QgcGFydDFMZW5ndGg7Ci0gICAgc2l6ZV90IHBh
cnQyTGVuZ3RoOwotICAgIGZpbmRXcmFwTGVuZ3RocyhtX3JlYWRJbmRleCwgZnJhbWVzVG9Db25z
dW1lLCBwYXJ0MUxlbmd0aCwgcGFydDJMZW5ndGgpOwotCi0gICAgc2l6ZV90IG51bWJlck9mQ2hh
bm5lbHMgPSBtX2ZpZm9BdWRpb0J1cy0+bnVtYmVyT2ZDaGFubmVscygpOwotCi0gICAgZm9yIChz
aXplX3QgY2hhbm5lbEluZGV4ID0gMDsgY2hhbm5lbEluZGV4IDwgbnVtYmVyT2ZDaGFubmVsczsg
KytjaGFubmVsSW5kZXgpIHsKLSAgICAgICAgZmxvYXQqIGRlc3RpbmF0aW9uRGF0YSA9IGRlc3Rp
bmF0aW9uLT5jaGFubmVsKGNoYW5uZWxJbmRleCktPm11dGFibGVEYXRhKCk7Ci0gICAgICAgIGNv
bnN0IGZsb2F0KiBzb3VyY2VEYXRhID0gbV9maWZvQXVkaW9CdXMtPmNoYW5uZWwoY2hhbm5lbElu
ZGV4KS0+ZGF0YSgpOwotCi0gICAgICAgIGJvb2wgaXNDb3B5R29vZCA9ICgobV9yZWFkSW5kZXgg
PCBtX2ZpZm9MZW5ndGgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAobV9yZWFkSW5k
ZXggKyBwYXJ0MUxlbmd0aCkgPD0gbV9maWZvTGVuZ3RoCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAmJiAocGFydDFMZW5ndGggPD0gZGVzdGluYXRpb24tPmxlbmd0aCgpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJiYgKHBhcnQxTGVuZ3RoICsgcGFydDJMZW5ndGgpIDw9IGRlc3Rp
bmF0aW9uLT5sZW5ndGgoKSk7Ci0gICAgICAgIEFTU0VSVChpc0NvcHlHb29kKTsKLSAgICAgICAg
aWYgKCFpc0NvcHlHb29kKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1lbWNweShk
ZXN0aW5hdGlvbkRhdGEsIHNvdXJjZURhdGEgKyBtX3JlYWRJbmRleCwgcGFydDFMZW5ndGggKiBz
aXplb2YoKnNvdXJjZURhdGEpKTsKLSAgICAgICAgLy8gSGFuZGxlIHdyYXAgYXJvdW5kIG9mIHRo
ZSBGSUZPLCBpZiBuZWVkZWQuCi0gICAgICAgIGlmIChwYXJ0Mkxlbmd0aCkKLSAgICAgICAgICAg
IG1lbWNweShkZXN0aW5hdGlvbkRhdGEgKyBwYXJ0MUxlbmd0aCwgc291cmNlRGF0YSwgcGFydDJM
ZW5ndGggKiBzaXplb2YoKnNvdXJjZURhdGEpKTsKLSAgICB9Ci0gICAgbV9yZWFkSW5kZXggPSB1
cGRhdGVJbmRleChtX3JlYWRJbmRleCwgZnJhbWVzVG9Db25zdW1lKTsKLSAgICBBU1NFUlQobV9m
cmFtZXNJbkZpZm8gPj0gZnJhbWVzVG9Db25zdW1lKTsKLSAgICBtX2ZyYW1lc0luRmlmbyAtPSBm
cmFtZXNUb0NvbnN1bWU7Ci19Ci0KLXZvaWQgQXVkaW9GSUZPOjpwdXNoKGNvbnN0IEF1ZGlvQnVz
KiBzb3VyY2VCdXMpCi17Ci0gICAgLy8gQ29weSB0aGUgc291cmNlQnVzIGludG8gdGhlIEZJRk8g
YnVmZmVyLgotCi0gICAgYm9vbCBpc0dvb2QgPSBzb3VyY2VCdXMgJiYgKG1fZnJhbWVzSW5GaWZv
ICsgc291cmNlQnVzLT5sZW5ndGgoKSA8PSBtX2ZpZm9MZW5ndGgpOwotICAgIGlmICghaXNHb29k
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBzaXplX3Qgc291cmNlTGVuZ3RoID0gc291cmNlQnVz
LT5sZW5ndGgoKTsKLSAgICBzaXplX3QgcGFydDFMZW5ndGg7Ci0gICAgc2l6ZV90IHBhcnQyTGVu
Z3RoOwotICAgIGZpbmRXcmFwTGVuZ3RocyhtX3dyaXRlSW5kZXgsIHNvdXJjZUxlbmd0aCwgcGFy
dDFMZW5ndGgsIHBhcnQyTGVuZ3RoKTsKLQotICAgIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzID0g
bV9maWZvQXVkaW9CdXMtPm51bWJlck9mQ2hhbm5lbHMoKTsKLQotICAgIGZvciAoc2l6ZV90IGNo
YW5uZWxJbmRleCA9IDA7IGNoYW5uZWxJbmRleCA8IG51bWJlck9mQ2hhbm5lbHM7ICsrY2hhbm5l
bEluZGV4KSB7Ci0gICAgICAgIGZsb2F0KiBkZXN0aW5hdGlvbiA9IG1fZmlmb0F1ZGlvQnVzLT5j
aGFubmVsKGNoYW5uZWxJbmRleCktPm11dGFibGVEYXRhKCk7Ci0gICAgICAgIGNvbnN0IGZsb2F0
KiBzb3VyY2UgPSBzb3VyY2VCdXMtPmNoYW5uZWwoY2hhbm5lbEluZGV4KS0+ZGF0YSgpOwotCi0g
ICAgICAgIGJvb2wgaXNDb3B5R29vZCA9ICgobV93cml0ZUluZGV4IDwgbV9maWZvTGVuZ3RoKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKG1fd3JpdGVJbmRleCArIHBhcnQxTGVuZ3Ro
KSA8PSBtX2ZpZm9MZW5ndGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHBhcnQyTGVu
Z3RoIDwgbV9maWZvTGVuZ3RoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBwYXJ0MUxl
bmd0aCArIHBhcnQyTGVuZ3RoIDw9IHNvdXJjZUxlbmd0aCk7Ci0gICAgICAgIEFTU0VSVChpc0Nv
cHlHb29kKTsKLSAgICAgICAgaWYgKCFpc0NvcHlHb29kKQotICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgIG1lbWNweShkZXN0aW5hdGlvbiArIG1fd3JpdGVJbmRleCwgc291cmNlLCBwYXJ0
MUxlbmd0aCAqIHNpemVvZigqZGVzdGluYXRpb24pKTsKLQotICAgICAgICAvLyBIYW5kbGUgd3Jh
cCBhcm91bmQgb2YgdGhlIEZJRk8sIGlmIG5lZWRlZC4KLSAgICAgICAgaWYgKHBhcnQyTGVuZ3Ro
KQotICAgICAgICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uLCBzb3VyY2UgKyBwYXJ0MUxlbmd0aCwg
cGFydDJMZW5ndGggKiBzaXplb2YoKmRlc3RpbmF0aW9uKSk7Ci0gICAgfQotICAgICAgICAKLSAg
ICBtX2ZyYW1lc0luRmlmbyArPSBzb3VyY2VMZW5ndGg7Ci0gICAgQVNTRVJUKG1fZnJhbWVzSW5G
aWZvIDw9IG1fZmlmb0xlbmd0aCk7Ci0gICAgbV93cml0ZUluZGV4ID0gdXBkYXRlSW5kZXgobV93
cml0ZUluZGV4LCBzb3VyY2VMZW5ndGgpOwotfQotCi12b2lkIEF1ZGlvRklGTzo6ZmluZFdyYXBM
ZW5ndGhzKHNpemVfdCBpbmRleCwgc2l6ZV90IHNpemUsIHNpemVfdCYgcGFydDFMZW5ndGgsIHNp
emVfdCYgcGFydDJMZW5ndGgpCi17Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJ
T04oaW5kZXggPCBtX2ZpZm9MZW5ndGggJiYgc2l6ZSA8PSBtX2ZpZm9MZW5ndGgpOwotICAgIGlm
IChpbmRleCA8IG1fZmlmb0xlbmd0aCAmJiBzaXplIDw9IG1fZmlmb0xlbmd0aCkgewotICAgICAg
ICBpZiAoaW5kZXggKyBzaXplID4gbV9maWZvTGVuZ3RoKSB7Ci0gICAgICAgICAgICAvLyBOZWVk
IHRvIHdyYXAuIEZpZ3VyZSBvdXQgdGhlIGxlbmd0aCBvZiBlYWNoIHBpZWNlLgotICAgICAgICAg
ICAgcGFydDFMZW5ndGggPSBtX2ZpZm9MZW5ndGggLSBpbmRleDsKLSAgICAgICAgICAgIHBhcnQy
TGVuZ3RoID0gc2l6ZSAtIHBhcnQxTGVuZ3RoOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgLy8gTm8gd3JhcCBuZWVkZWQuCi0gICAgICAgICAgICBwYXJ0MUxlbmd0aCA9IHNpemU7Ci0g
ICAgICAgICAgICBwYXJ0Mkxlbmd0aCA9IDA7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAg
ICAgICAvLyBJbnZhbGlkIHZhbHVlcyBmb3IgaW5kZXggb3Igc2l6ZS4gU2V0IHRoZSBwYXJ0IGxl
bmd0aHMgdG8gemVybyBzbyBub3RoaW5nIGlzIGNvcGllZC4KLSAgICAgICAgcGFydDFMZW5ndGgg
PSAwOwotICAgICAgICBwYXJ0Mkxlbmd0aCA9IDA7Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9GSUZPLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MGY0MzhkZDdkMGZhNTlmYjY0NGQ0ZGY1NzJmNTU5ZmQ2NjMwOGJkMy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb0ZJRk8uaAorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgQXVkaW9GSUZP
X2gKLSNkZWZpbmUgQXVkaW9GSUZPX2gKLQotI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQXVkaW9GSUZPIGZpbmFsIHsKLSAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICAvLyBDcmVhdGUgYSBGSUZPIGxhcmdlIGVub3Vn
aCB0byBob2xkIHxmaWZvTGVuZ3RofCBmcmFtZXMgb2YgZGF0YSBvZiB8bnVtYmVyT2ZDaGFubmVs
c3wgY2hhbm5lbHMuCi0gICAgQXVkaW9GSUZPKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNp
emVfdCBmaWZvTGVuZ3RoKTsKLQotICAgIC8vIFB1c2ggdGhlIGRhdGEgZnJvbSB0aGUgYnVzIGlu
dG8gdGhlIEZJRk8uCi0gICAgdm9pZCBwdXNoKGNvbnN0IEF1ZGlvQnVzKik7Ci0KLSAgICAvLyBD
b25zdW1lIHxmcmFtZXNUb0NvbnN1bWV8IGZyYW1lcyBvZiBkYXRhIGZyb20gdGhlIEZJRk8gYW5k
IHB1dCB0aGVtIGluIHxkZXN0aW5hdGlvbnwuIFRoZQotICAgIC8vIGNvcnJlc3BvbmRpbmcgZnJh
bWVzIGFyZSByZW1vdmVkIGZyb20gdGhlIEZJRk8uCi0gICAgdm9pZCBjb25zdW1lKEF1ZGlvQnVz
KiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1RvQ29uc3VtZSk7Ci0KLSAgICAvLyBOdW1iZXIg
b2YgZnJhbWVzIG9mIGRhdGEgdGhhdCBhcmUgY3VycmVudGx5IGluIHRoZSBGSUZPLgotICAgIHNp
emVfdCBmcmFtZXNJbkZpZm8oKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lc0luRmlmbzsgfQotCi1w
cml2YXRlOgotICAgIC8vIFVwZGF0ZSB0aGUgRklGTyBpbmRleCBieSB0aGUgc3RlcCwgd2l0aCBh
cHByb3ByaWF0ZSB3cmFwcGluZyBhcm91bmQgdGhlIGVuZHBvaW50LgotICAgIGludCB1cGRhdGVJ
bmRleChpbnQgaW5kZXgsIGludCBzdGVwKSB7IHJldHVybiAoaW5kZXggKyBzdGVwKSAlIG1fZmlm
b0xlbmd0aDsgfQotCi0gICAgdm9pZCBmaW5kV3JhcExlbmd0aHMoc2l6ZV90IGluZGV4LCBzaXpl
X3QgcHJvdmlkZXJTaXplLCBzaXplX3QmIHBhcnQxTGVuZ3RoLCBzaXplX3QmIHBhcnQyTGVuZ3Ro
KTsKLSAgICAKLSAgICAvLyBUaGUgRklGTyBpdHNlbGYuIEluIHJlYWxpdHksIHRoZSBGSUZPIGlz
IGEgY2lyY3VsYXIgYnVmZmVyLgotICAgIFJlZlB0cjxBdWRpb0J1cz4gbV9maWZvQXVkaW9CdXM7
Ci0KLSAgICAvLyBUaGUgdG90YWwgYXZhaWxhYmxlIHNwYWNlIGluIHRoZSBGSUZPLgotICAgIHNp
emVfdCBtX2ZpZm9MZW5ndGg7Ci0KLSAgICAvLyBUaGUgbnVtYmVyIG9mIGFjdHVhbCBlbGVtZW50
cyBpbiB0aGUgRklGTwotICAgIHNpemVfdCBtX2ZyYW1lc0luRmlmbzsKLQotICAgIC8vIFdoZXJl
IHRvIHN0YXJ0IHJlYWRpbmcgZnJvbSB0aGUgRklGTy4KLSAgICBzaXplX3QgbV9yZWFkSW5kZXg7
Ci0KLSAgICAvLyBXaGVyZSB0byBzdGFydCB3cml0aW5nIHRvIHRoZSBGSUZPLgotICAgIHNpemVf
dCBtX3dyaXRlSW5kZXg7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBBdWRpb0ZJRk8uaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9QdWxsRklGTy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1B1
bGxGSUZPLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmIxYTYyMjI2YjlmODE3
MmI3ZmM2MGRjMjIwMjA0NjA1OWIzNTg3YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxG
SUZPLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0
aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lm
IEVOQUJMRShXRUJfQVVESU8pCi0KLSNpbmNsdWRlICJBdWRpb1B1bGxGSUZPLmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotQXVkaW9QdWxsRklGTzo6QXVkaW9QdWxsRklGTyhBdWRpb1NvdXJj
ZVByb3ZpZGVyJiBhdWRpb1Byb3ZpZGVyLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXpl
X3QgZmlmb0xlbmd0aCwgc2l6ZV90IHByb3ZpZGVyU2l6ZSkKLSAgICA6IG1fcHJvdmlkZXIoYXVk
aW9Qcm92aWRlcikKLSAgICAsIG1fZmlmbyhudW1iZXJPZkNoYW5uZWxzLCBmaWZvTGVuZ3RoKQot
ICAgICwgbV9wcm92aWRlclNpemUocHJvdmlkZXJTaXplKQotICAgICwgbV90ZW1wQnVzKEF1ZGlv
QnVzOjpjcmVhdGUobnVtYmVyT2ZDaGFubmVscywgcHJvdmlkZXJTaXplKSkKLXsKLX0KLQotdm9p
ZCBBdWRpb1B1bGxGSUZPOjpjb25zdW1lKEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZy
YW1lc1RvQ29uc3VtZSkKLXsKLSAgICBpZiAoIWRlc3RpbmF0aW9uKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBpZiAoZnJhbWVzVG9Db25zdW1lID4gbV9maWZvLmZyYW1lc0luRmlmbygpKSB7Ci0g
ICAgICAgIC8vIFdlIGRvbid0IGhhdmUgZW5vdWdoIGRhdGEgaW4gdGhlIEZJRk8gdG8gZnVsZmls
bCB0aGUgcmVxdWVzdC4gQXNrIGZvciBtb3JlIGRhdGEuCi0gICAgICAgIGZpbGxCdWZmZXIoZnJh
bWVzVG9Db25zdW1lIC0gbV9maWZvLmZyYW1lc0luRmlmbygpKTsKLSAgICB9Ci0KLSAgICBtX2Zp
Zm8uY29uc3VtZShkZXN0aW5hdGlvbiwgZnJhbWVzVG9Db25zdW1lKTsKLX0KLQotdm9pZCBBdWRp
b1B1bGxGSUZPOjpmaWxsQnVmZmVyKHNpemVfdCBudW1iZXJPZkZyYW1lcykKLXsKLSAgICAvLyBL
ZWVwIGFza2luZyB0aGUgcHJvdmlkZXIgdG8gZ2l2ZSB1cyBkYXRhIHVudGlsIHdlIGhhdmUgcmVj
ZWl2ZWQgYXQgbGVhc3QgfG51bWJlck9mRnJhbWVzfCBvZgotICAgIC8vIGRhdGEuIFN0dWZmIHRo
ZSBkYXRhIGludG8gdGhlIEZJRk8uCi0gICAgc2l6ZV90IGZyYW1lc1Byb3ZpZGVkID0gMDsKLQot
ICAgIHdoaWxlIChmcmFtZXNQcm92aWRlZCA8IG51bWJlck9mRnJhbWVzKSB7Ci0gICAgICAgIG1f
cHJvdmlkZXIucHJvdmlkZUlucHV0KG1fdGVtcEJ1cy5nZXQoKSwgbV9wcm92aWRlclNpemUpOwot
Ci0gICAgICAgIG1fZmlmby5wdXNoKG1fdGVtcEJ1cy5nZXQoKSk7Ci0KLSAgICAgICAgZnJhbWVz
UHJvdmlkZWQgKz0gbV9wcm92aWRlclNpemU7Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9QdWxsRklGTy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9QdWxsRklGTy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBkNzQ4ZmE0MTM4NzM3OWRiMzk1YmVhZTY1Zjg4MmJhMjU4ZTlmYzI2Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0F1ZGlvUHVsbEZJRk8uaAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIElu
Yy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYg
QXVkaW9QdWxsRklGT19oCi0jZGVmaW5lIEF1ZGlvUHVsbEZJRk9faAotCi0jaW5jbHVkZSAiQXVk
aW9CdXMuaCIKLSNpbmNsdWRlICJBdWRpb0ZJRk8uaCIKLSNpbmNsdWRlICJBdWRpb1NvdXJjZVBy
b3ZpZGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gQSBGSUZPIChGaXJzdCBJbiBG
aXJzdCBPdXQpIGJ1ZmZlciB0byBoYW5kbGUgbWlzbWF0Y2hlcyBpbiBidWZmZXIgc2l6ZXMgYmV0
d2VlbiBhIHByb3ZpZGVyIGFuZAotLy8gcmVjZWl2ZXIuIFRoZSByZWNlaXZlciB3aWxsICJwdWxs
IiBkYXRhIGZyb20gdGhpcyBGSUZPLiBJZiBkYXRhIGlzIGFscmVhZHkgYXZhaWxhYmxlIGluIHRo
ZQotLy8gRklGTywgaXQgaXMgcHJvdmlkZWQgdG8gdGhlIHJlY2VpdmVyLiBJZiBpbnN1ZmZpY2ll
bnQgZGF0YSBpcyBhdmFpbGFibGUgdG8gc2F0aXNmeSB0aGUgcmVxdWVzdCwKLS8vIHRoZSBGSUZP
IHdpbGwgYXNrIHRoZSBwcm92aWRlciBmb3IgbW9yZSBkYXRhIHdoZW4gbmVjZXNzYXJ5IHRvIGZ1
bGZpbGwgYSByZXF1ZXN0LiBDb250cmFzdCB0aGlzCi0vLyB3aXRoIGEgInB1c2giIEZJRk8sIHdo
ZXJlIHRoZSBzZW5kZXIgcHVzaGVzIGRhdGEgdG8gdGhlIEZJRk8gd2hpY2ggd2lsbCBpdHNlbGYg
cHVzaCB0aGUgZGF0YSB0bwotLy8gdGhlIHJlY2VpdmVyIHdoZW4gdGhlIEZJRk8gaXMgZnVsbC4K
LWNsYXNzIEF1ZGlvUHVsbEZJRk8gZmluYWwgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwotcHVibGljOgotICAgIC8vIENyZWF0ZSBhIEZJRk8gdGhhdCBnZXRzIGRhdGEgZnJvbSB8cHJv
dmlkZXJ8LiBUaGUgRklGTyB3aWxsIGJlIGxhcmdlIGVub3VnaCB0byBob2xkCi0gICAgLy8gfGZp
Zm9MZW5ndGh8IGZyYW1lcyBvZiBkYXRhIG9mIHxudW1iZXJPZkNoYW5uZWxzfCBjaGFubmVscy4g
VGhlIEF1ZGlvU291cmNlUHJvdmlkZXIgd2lsbCBiZQotICAgIC8vIGFza2VkIHRvIHByb2R1Y2Ug
fHByb3ZpZGVyU2l6ZXwgZnJhbWVzIHdoZW4gdGhlIEZJRk8gbmVlZHMgbW9yZSBkYXRhLgotICAg
IEF1ZGlvUHVsbEZJRk8oQXVkaW9Tb3VyY2VQcm92aWRlciYgYXVkaW9Qcm92aWRlciwgdW5zaWdu
ZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IGZpZm9MZW5ndGgsIHNpemVfdCBwcm92aWRlclNp
emUpOwotCi0gICAgLy8gUmVhZCB8ZnJhbWVzVG9Db25zdW1lfCBmcmFtZXMgZnJvbSB0aGUgRklG
TyBpbnRvIHRoZSBkZXN0aW5hdGlvbi4gSWYgdGhlIEZJRk8gZG9lcyBub3QgaGF2ZQotICAgIC8v
IGVub3VnaCBkYXRhLCB3ZSBhc2sgdGhlIHxwcm92aWRlcnwgdG8gZ2V0IG1vcmUgZGF0YSB0byBm
dWxmaWxsIHRoZSByZXF1ZXN0LgotICAgIHZvaWQgY29uc3VtZShBdWRpb0J1cyogZGVzdGluYXRp
b24sIHNpemVfdCBmcmFtZXNUb0NvbnN1bWUpOwotCi1wcml2YXRlOgotICAgIC8vIEZpbGwgdGhl
IEZJRk8gYnVmZmVyIHdpdGggYXQgbGVhc3QgfG51bWJlck9mRnJhbWVzfCBtb3JlIGRhdGEuCi0g
ICAgdm9pZCBmaWxsQnVmZmVyKHNpemVfdCBudW1iZXJPZkZyYW1lcyk7Ci0KLSAgICAvLyBUaGUg
cHJvdmlkZXIgb2YgdGhlIGRhdGEgaW4gb3VyIEZJRk8uCi0gICAgQXVkaW9Tb3VyY2VQcm92aWRl
ciYgbV9wcm92aWRlcjsKLQotICAgIC8vIFRoZSBhY3R1YWwgRklGTwotICAgIEF1ZGlvRklGTyBt
X2ZpZm87Ci0KLSAgICAvLyBOdW1iZXIgb2YgZnJhbWVzIG9mIGRhdGEgdGhhdCB0aGUgcHJvdmlk
ZXIgd2lsbCBwcm9kdWNlIHBlciBjYWxsLgotICAgIHVuc2lnbmVkIGludCBtX3Byb3ZpZGVyU2l6
ZTsKLQotICAgIC8vIFRlbXBvcmFyeSB3b3Jrc3BhY2UgdG8gaG9sZCB0aGUgZGF0YSBmcm9tIHRo
ZSBwcm92aWRlci4KLSAgICBSZWZQdHI8QXVkaW9CdXM+IG1fdGVtcEJ1czsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEF1ZGlvUHVsbEZJRk8uaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5j
cHAKaW5kZXggNWU2MjY4ZDNiYjEzYjVmMjcxZDJlNmE4OTYwMjgwZTc1M2I5ZGE0ZC4uODRlZmFi
MTYzMWIxYTY2Y2Y2NTE5YzFhMmI2M2U5NjljMjZkZWYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuY3BwCkBAIC05
MiwxMyArOTIsMTMgQEAgcHJpdmF0ZToKICAgICBzaXplX3QgbV9mcmFtZXNUb1Byb2Nlc3MgeyAw
IH07IC8vIFVzZWQgdG8gdmVyaWZ5IHRoYXQgYWxsIGNoYW5uZWxzIGFzayBmb3IgdGhlIHNhbWUg
YW1vdW50LgogfTsKIAotTXVsdGlDaGFubmVsUmVzYW1wbGVyOjpNdWx0aUNoYW5uZWxSZXNhbXBs
ZXIoZG91YmxlIHNjYWxlRmFjdG9yLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKQorTXVsdGlD
aGFubmVsUmVzYW1wbGVyOjpNdWx0aUNoYW5uZWxSZXNhbXBsZXIoZG91YmxlIHNjYWxlRmFjdG9y
LCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBPcHRpb25hbDx1bnNpZ25lZD4gcmVxdWVzdEZy
YW1lcykKICAgICA6IG1fbnVtYmVyT2ZDaGFubmVscyhudW1iZXJPZkNoYW5uZWxzKQogICAgICwg
bV9jaGFubmVsUHJvdmlkZXIobWFrZVVuaXF1ZTxDaGFubmVsUHJvdmlkZXI+KG1fbnVtYmVyT2ZD
aGFubmVscykpCiB7CiAgICAgLy8gQ3JlYXRlIGVhY2ggY2hhbm5lbCdzIHJlc2FtcGxlci4KICAg
ICBmb3IgKHVuc2lnbmVkIGNoYW5uZWxJbmRleCA9IDA7IGNoYW5uZWxJbmRleCA8IG51bWJlck9m
Q2hhbm5lbHM7ICsrY2hhbm5lbEluZGV4KQotICAgICAgICBtX2tlcm5lbHMuYXBwZW5kKG1ha2VV
bmlxdWU8U2luY1Jlc2FtcGxlcj4oc2NhbGVGYWN0b3IpKTsKKyAgICAgICAgbV9rZXJuZWxzLmFw
cGVuZChtYWtlVW5pcXVlPFNpbmNSZXNhbXBsZXI+KHNjYWxlRmFjdG9yLCByZXF1ZXN0RnJhbWVz
KSk7CiB9CiAKIE11bHRpQ2hhbm5lbFJlc2FtcGxlcjo6fk11bHRpQ2hhbm5lbFJlc2FtcGxlcigp
ID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011
bHRpQ2hhbm5lbFJlc2FtcGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVs
dGlDaGFubmVsUmVzYW1wbGVyLmgKaW5kZXggYWM4MWJlYzRiZTBiNDBkMjg0MTc2OWFlOGFjYTA3
MTg2OGJhYjBjZi4uNzE2YmM2MDFlODc4ZTNmNzRmNzRlYTM0ZGNiZDFjNzk4YzRkZGNhOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1w
bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVz
YW1wbGVyLmgKQEAgLTQwLDcgKzQwLDggQEAgY2xhc3MgQXVkaW9CdXM7CiBjbGFzcyBNdWx0aUNo
YW5uZWxSZXNhbXBsZXIgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOiAgIAotICAgIGV4cGxpY2l0IE11bHRpQ2hhbm5lbFJlc2FtcGxlcihkb3VibGUgc2NhbGVG
YWN0b3IsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMpOworICAgIC8vIHJlcXVlc3RGcmFtZXMg
Y29uc3Ryb2xzIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgaW4gZnJhbWVzIHdoZW4gQXVkaW9Tb3Vy
Y2VQcm92aWRlcjo6cHJvdmlkZUlucHV0KCkgaXMgY2FsbGVkLgorICAgIGV4cGxpY2l0IE11bHRp
Q2hhbm5lbFJlc2FtcGxlcihkb3VibGUgc2NhbGVGYWN0b3IsIHVuc2lnbmVkIG51bWJlck9mQ2hh
bm5lbHMsIE9wdGlvbmFsPHVuc2lnbmVkPiByZXF1ZXN0RnJhbWVzID0gV1RGOjpudWxsb3B0KTsK
ICAgICB+TXVsdGlDaGFubmVsUmVzYW1wbGVyKCk7CiAKICAgICAvLyBQcm9jZXNzIGdpdmVuIEF1
ZGlvU291cmNlUHJvdmlkZXIgZm9yIHN0cmVhbWluZyBhcHBsaWNhdGlvbnMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QdXNoUHVsbEZJRk8uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUHVzaFB1bGxGSUZPLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjg3
ZThjZmE0ZDNjNDhhNTE1Yjk1ZjhhZDY0ODU2OTFlM2FiOGI2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUHVzaFB1bGxGSUZPLmNwcApAQCAtMCwwICsx
LDEyOSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE3IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlB1c2hQdWxsRklGTy5oIgorCisjaW5jbHVkZSAiQXVkaW9CdXMuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjb25zdCBzaXplX3QgUHVzaFB1bGxGSUZPOjprTWF4RklGT0xlbmd0aCA9IDY1
NTM2OworCitQdXNoUHVsbEZJRk86OlB1c2hQdWxsRklGTyh1bnNpZ25lZCBudW1iZXJPZkNoYW5u
ZWxzLCBzaXplX3QgZmlmb0xlbmd0aCkKKyAgICA6IG1fZmlmb0xlbmd0aChmaWZvTGVuZ3RoKQor
eworICAgIEFTU0VSVChtX2ZpZm9MZW5ndGggPD0ga01heEZJRk9MZW5ndGgpOworICAgIG1fZmlm
b0J1cyA9IEF1ZGlvQnVzOjpjcmVhdGUobnVtYmVyT2ZDaGFubmVscywgbV9maWZvTGVuZ3RoKTsK
K30KKworUHVzaFB1bGxGSUZPOjp+UHVzaFB1bGxGSUZPKCkgPSBkZWZhdWx0OworCisvLyBQdXNo
IHRoZSBkYXRhIGZyb20gfGlucHV0QnVzfCB0byBGSUZPLiBUaGUgc2l6ZSBvZiBwdXNoIGlzIGRl
dGVybWluZWQgYnkKKy8vIHRoZSBsZW5ndGggb2YgfGlucHV0QnVzfC4KK3ZvaWQgUHVzaFB1bGxG
SUZPOjpwdXNoKGNvbnN0IEF1ZGlvQnVzKiBpbnB1dEJ1cykKK3sKKyAgICBBU1NFUlQoaW5wdXRC
dXMpOworICAgIEFTU0VSVChpbnB1dEJ1cy0+bGVuZ3RoKCkgPD0gbV9maWZvTGVuZ3RoKTsKKyAg
ICBBU1NFUlQobV9pbmRleFdyaXRlIDwgbV9maWZvTGVuZ3RoKTsKKworICAgIGNvbnN0IHNpemVf
dCBpbnB1dEJ1c0xlbmd0aCA9IGlucHV0QnVzLT5sZW5ndGgoKTsKKyAgICBjb25zdCBzaXplX3Qg
cmVtYWluZGVyID0gbV9maWZvTGVuZ3RoIC0gbV9pbmRleFdyaXRlOworCisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fZmlmb0J1cy0+bnVtYmVyT2ZDaGFubmVscygpOyArK2kpIHsKKyAg
ICAgICAgZmxvYXQqIGZpZm9CdXNDaGFubmVsID0gbV9maWZvQnVzLT5jaGFubmVsKGkpLT5tdXRh
YmxlRGF0YSgpOworICAgICAgICBjb25zdCBmbG9hdCogaW5wdXRCdXNDaGFubmVsID0gaW5wdXRC
dXMtPmNoYW5uZWwoaSktPmRhdGEoKTsKKyAgICAgICAgaWYgKHJlbWFpbmRlciA+PSBpbnB1dEJ1
c0xlbmd0aCkgeworICAgICAgICAgICAgLy8gVGhlIHJlbWFpbmRlciBpcyBiaWcgZW5vdWdoIGZv
ciB0aGUgaW5wdXQgZGF0YS4KKyAgICAgICAgICAgIG1lbWNweShmaWZvQnVzQ2hhbm5lbCArIG1f
aW5kZXhXcml0ZSwgaW5wdXRCdXNDaGFubmVsLCBpbnB1dEJ1c0xlbmd0aCAqIHNpemVvZigqZmlm
b0J1c0NoYW5uZWwpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFRoZSBpbnB1
dCBkYXRhIG92ZXJmbG93cyB0aGUgcmVtYWluZGVyIHNpemUuIFdyYXAgYXJvdW5kIHRoZSBpbmRl
eC4KKyAgICAgICAgICAgIG1lbWNweShmaWZvQnVzQ2hhbm5lbCArIG1faW5kZXhXcml0ZSwgaW5w
dXRCdXNDaGFubmVsLCByZW1haW5kZXIgKiBzaXplb2YoKmZpZm9CdXNDaGFubmVsKSk7CisgICAg
ICAgICAgICBtZW1jcHkoZmlmb0J1c0NoYW5uZWwsIGlucHV0QnVzQ2hhbm5lbCArIHJlbWFpbmRl
ciwgKGlucHV0QnVzTGVuZ3RoIC0gcmVtYWluZGVyKSAqIHNpemVvZigqZmlmb0J1c0NoYW5uZWwp
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFVwZGF0ZSB0aGUgd3JpdGUgaW5kZXg7IHdy
YXAgaXQgYXJvdW5kIGlmIG5lY2Vzc2FyeS4KKyAgICBtX2luZGV4V3JpdGUgPSAobV9pbmRleFdy
aXRlICsgaW5wdXRCdXNMZW5ndGgpICUgbV9maWZvTGVuZ3RoOworCisgICAgLy8gSW4gY2FzZSBv
ZiBvdmVyZmxvdywgbW92ZSB0aGUgfGluZGV4UmVhZHwgdG8gdGhlIHVwZGF0ZWQgfGluZGV4V3Jp
dGV8IHRvCisgICAgLy8gYXZvaWQgcmVhZGluZyBvdmVyd3JpdHRlbiBmcmFtZXMgYnkgdGhlIG5l
eHQgcHVsbC4KKyAgICBpZiAoaW5wdXRCdXNMZW5ndGggPiBtX2ZpZm9MZW5ndGggLSBtX2ZyYW1l
c0F2YWlsYWJsZSkKKyAgICAgICAgbV9pbmRleFJlYWQgPSBtX2luZGV4V3JpdGU7CisKKyAgICAv
LyBVcGRhdGUgdGhlIG51bWJlciBvZiBmcmFtZXMgYXZhaWxhYmxlIGluIEZJRk8uCisgICAgbV9m
cmFtZXNBdmFpbGFibGUgPSBzdGQ6Om1pbihtX2ZyYW1lc0F2YWlsYWJsZSArIGlucHV0QnVzTGVu
Z3RoLCBtX2ZpZm9MZW5ndGgpOworICAgIEFTU0VSVCgoKG1faW5kZXhSZWFkICsgbV9mcmFtZXNB
dmFpbGFibGUpICUgbV9maWZvTGVuZ3RoKSA9PSBtX2luZGV4V3JpdGUpOworfQorCisvLyBQdWxs
IHRoZSBkYXRhIG91dCBvZiBGSUZPIHRvIHxvdXRwdXRCdXN8LiBJZiByZW1haW5pbmcgZnJhbWUg
aW4gdGhlIEZJRk8KKy8vIGlzIGxlc3MgdGhhbiB0aGUgZnJhbWVzIHRvIHB1bGwsIHByb3ZpZGVz
IHJlbWFpbmluZyBmcmFtZSBwbHVzIHRoZSBzaWxlbmNlLgorc2l6ZV90IFB1c2hQdWxsRklGTzo6
cHVsbChBdWRpb0J1cyogb3V0cHV0QnVzLCBzaXplX3QgZnJhbWVzUmVxdWVzdGVkKQoreworICAg
IEFTU0VSVChvdXRwdXRCdXMpOworICAgIEFTU0VSVChmcmFtZXNSZXF1ZXN0ZWQgPD0gb3V0cHV0
QnVzLT5sZW5ndGgoKSk7CisgICAgQVNTRVJUKGZyYW1lc1JlcXVlc3RlZCA8PSBtX2ZpZm9MZW5n
dGgpOworICAgIEFTU0VSVChtX2luZGV4UmVhZCA8IG1fZmlmb0xlbmd0aCk7CisKKyAgICBjb25z
dCBzaXplX3QgcmVtYWluZGVyID0gbV9maWZvTGVuZ3RoIC0gbV9pbmRleFJlYWQ7CisgICAgY29u
c3Qgc2l6ZV90IGZyYW1lc1RvRmlsbCA9IHN0ZDo6bWluKG1fZnJhbWVzQXZhaWxhYmxlLCBmcmFt
ZXNSZXF1ZXN0ZWQpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZmlmb0J1cy0+
bnVtYmVyT2ZDaGFubmVscygpOyArK2kpIHsKKyAgICAgICAgY29uc3QgZmxvYXQqIGZpZm9CdXND
aGFubmVsID0gbV9maWZvQnVzLT5jaGFubmVsKGkpLT5kYXRhKCk7CisgICAgICAgIGZsb2F0KiBv
dXRwdXRCdXNDaGFubmVsID0gb3V0cHV0QnVzLT5jaGFubmVsKGkpLT5tdXRhYmxlRGF0YSgpOwor
CisgICAgICAgIC8vIEZpbGwgdXAgdGhlIG91dHB1dCBidXMgd2l0aCB0aGUgYXZhaWxhYmxlIGZy
YW1lcyBmaXJzdC4KKyAgICAgICAgaWYgKHJlbWFpbmRlciA+PSBmcmFtZXNUb0ZpbGwpIHsKKyAg
ICAgICAgICAgIC8vIFRoZSByZW1haW5kZXIgaXMgYmlnIGVub3VnaCBmb3IgdGhlIGZyYW1lcyB0
byBwdWxsLgorICAgICAgICAgICAgbWVtY3B5KG91dHB1dEJ1c0NoYW5uZWwsIGZpZm9CdXNDaGFu
bmVsICsgbV9pbmRleFJlYWQsIGZyYW1lc1RvRmlsbCAqIHNpemVvZigqZmlmb0J1c0NoYW5uZWwp
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFRoZSBmcmFtZXMgdG8gcHVsbCBp
cyBiaWdnZXIgdGhhbiB0aGUgcmVtYWluZGVyIHNpemUuCisgICAgICAgICAgICAvLyBXcmFwIGFy
b3VuZCB0aGUgaW5kZXguCisgICAgICAgICAgICBtZW1jcHkob3V0cHV0QnVzQ2hhbm5lbCwgZmlm
b0J1c0NoYW5uZWwgKyBtX2luZGV4UmVhZCwgcmVtYWluZGVyICogc2l6ZW9mKCpmaWZvQnVzQ2hh
bm5lbCkpOworICAgICAgICAgICAgbWVtY3B5KG91dHB1dEJ1c0NoYW5uZWwgKyByZW1haW5kZXIs
IGZpZm9CdXNDaGFubmVsLCAoZnJhbWVzVG9GaWxsIC0gcmVtYWluZGVyKSAqIHNpemVvZigqZmlm
b0J1c0NoYW5uZWwpKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFRoZSBmcmFtZXMgYXZhaWxh
YmxlIHdhcyBub3QgZW5vdWdoIHRvIGZ1bGZpbGwgdGhlIHJlcXVlc3RlZCBmcmFtZXMuIEZpbGwK
KyAgICAgICAgLy8gdGhlIHJlc3Qgb2YgdGhlIGNoYW5uZWwgd2l0aCBzaWxlbmNlLgorICAgICAg
ICBpZiAoZnJhbWVzUmVxdWVzdGVkID4gZnJhbWVzVG9GaWxsKQorICAgICAgICAgICAgbWVtc2V0
KG91dHB1dEJ1c0NoYW5uZWwgKyBmcmFtZXNUb0ZpbGwsIDAsIChmcmFtZXNSZXF1ZXN0ZWQgLSBm
cmFtZXNUb0ZpbGwpICogc2l6ZW9mKCpvdXRwdXRCdXNDaGFubmVsKSk7CisgICAgfQorCisgICAg
Ly8gVXBkYXRlIHRoZSByZWFkIGluZGV4OyB3cmFwIGl0IGFyb3VuZCBpZiBuZWNlc3NhcnkuCisg
ICAgbV9pbmRleFJlYWQgPSAobV9pbmRleFJlYWQgKyBmcmFtZXNUb0ZpbGwpICUgbV9maWZvTGVu
Z3RoOworCisgICAgLy8gSW4gY2FzZSBvZiB1bmRlcmZsb3csIG1vdmUgdGhlIHxpbmRleFdyaXRl
fCB0byB0aGUgdXBkYXRlZCB8aW5kZXhSZWFkfC4KKyAgICBpZiAoZnJhbWVzUmVxdWVzdGVkID4g
ZnJhbWVzVG9GaWxsKQorICAgICAgICBtX2luZGV4V3JpdGUgPSBtX2luZGV4UmVhZDsKKworICAg
IC8vIFVwZGF0ZSB0aGUgbnVtYmVyIG9mIGZyYW1lcyBpbiBGSUZPLgorICAgIG1fZnJhbWVzQXZh
aWxhYmxlIC09IGZyYW1lc1RvRmlsbDsKKyAgICBBU1NFUlQoKChtX2luZGV4UmVhZCArIG1fZnJh
bWVzQXZhaWxhYmxlKSAlIG1fZmlmb0xlbmd0aCkgPT0gbV9pbmRleFdyaXRlKTsKKworICAgIC8v
IHxmcmFtZXNSZXF1ZXN0ZWQgPiBtX2ZyYW1lc0F2YWlsYWJsZXwgbWVhbnMgdGhlIGZyYW1lcyBp
biBGSUZPIGlzIG5vdAorICAgIC8vIGVub3VnaCB0byBmdWxmaWxsIHRoZSByZXF1ZXN0ZWQgZnJh
bWVzIGZyb20gdGhlIGF1ZGlvIGRldmljZS4KKyAgICByZXR1cm4gZnJhbWVzUmVxdWVzdGVkID4g
bV9mcmFtZXNBdmFpbGFibGUgPyBmcmFtZXNSZXF1ZXN0ZWQgLSBtX2ZyYW1lc0F2YWlsYWJsZSA6
IDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1B1c2hQdWxsRklGTy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUHVzaFB1bGxGSUZPLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjlkMTQ1M2VjZTdiZDcyZTczNjYz
OGUzZTUzNDQyMTM5OWRjZGJlNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1B1c2hQdWxsRklGTy5oCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgMjAxNyBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9CdXM7CisKKy8vIFB1c2hQdWxsRklGTyBjbGFzcyBp
cyBhbiBpbnRlcm1lZGlhdGUgYXVkaW8gc2FtcGxlIHN0b3JhZ2UgYmV0d2VlbgorLy8gV2ViS2l0
LVdlYkF1ZGlvIGFuZCB0aGUgcmVuZGVyZXIuIFRoZSByZW5kZXJlcidzIGhhcmR3YXJlIGNhbGxi
YWNrIGJ1ZmZlciBzaXplCisvLyB2YXJpZXMgb24gdGhlIHBsYXRmb3JtLCBidXQgdGhlIFdlYkF1
ZGlvIGFsd2F5cyByZW5kZXJzIDEyOCBmcmFtZXMgKHJlbmRlcgorLy8gcXVhbnR1bSwgUlEpIHRo
dXMgRklGTyBpcyBuZWVkZWQgdG8gaGFuZGxlIHRoZSBnZW5lcmFsIGNhc2UuCitjbGFzcyBQdXNo
UHVsbEZJRk8geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFB1c2hQdWxsRklGTyk7CisKK3B1YmxpYzoKKyAgICAvLyBNYXhpbXVtIEZJRk8g
bGVuZ3RoLiAoNTEyIHJlbmRlciBxdWFudGEpCisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBrTWF4
RklGT0xlbmd0aDsKKworICAgIC8vIHxmaWZvTGVuZ3RofCBjYW5ub3QgZXhjZWVkIHxrTWF4RklG
T0xlbmd0aHwuIE90aGVyd2lzZSBpdCBjcmFzaGVzLgorICAgIFB1c2hQdWxsRklGTyh1bnNpZ25l
ZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgZmlmb0xlbmd0aCk7CisgICAgflB1c2hQdWxsRklG
TygpOworCisgICAgLy8gUHVzaGVzIHRoZSByZW5kZXJlZCBmcmFtZXMgYnkgV2ViQXVkaW8gZW5n
aW5lLgorICAgIC8vICAtIFRoZSB8aW5wdXRCdXN8IGxlbmd0aCBpcyAxMjggZnJhbWVzICgxIHJl
bmRlciBxdWFudHVtKSwgZml4ZWQuCisgICAgLy8gIC0gSW4gY2FzZSBvZiBvdmVyZmxvdyAoRklG
TyBmdWxsIHdoaWxlIHB1c2gpLCB0aGUgZXhpc3RpbmcgZnJhbWVzIGluIEZJRk8KKyAgICAvLyAg
ICB3aWxsIGJlIG92ZXJ3cml0dGVuIGFuZCB8aW5kZXhSZWFkfCB3aWxsIGJlIGZvcmNpYmx5IG1v
dmVkIHRvCisgICAgLy8gICAgfGluZGV4V3JpdGV8IHRvIGF2b2lkIHJlYWRpbmcgb3ZlcndyaXR0
ZW4gZnJhbWVzLgorICAgIHZvaWQgcHVzaChjb25zdCBBdWRpb0J1cyogaW5wdXRCdXMpOworCisg
ICAgLy8gUHVsbHMgfGZyYW1lc1JlcXVlc3RlZHwgYnkgdGhlIGF1ZGlvIGRldmljZSB0aHJlYWQg
YW5kIHJldHVybnMgdGhlIGFjdHVhbAorICAgIC8vIG51bWJlciBvZiBmcmFtZXMgdG8gYmUgcmVu
ZGVyZWQgYnkgdGhlIHNvdXJjZS4gKGkuZS4gV2ViQXVkaW8gZ3JhcGgpCisgICAgc2l6ZV90IHB1
bGwoQXVkaW9CdXMqIG91dHB1dEJ1cywgc2l6ZV90IGZyYW1lc1JlcXVlc3RlZCk7CisKKyAgICBz
aXplX3QgZnJhbWVzQXZhaWxhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZXNBdmFpbGFibGU7
IH0KKyAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9maWZvTGVuZ3RoOyB9Cisg
ICAgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscygpIGNvbnN0IHsgcmV0dXJuIG1fZmlmb0J1cy0+
bnVtYmVyT2ZDaGFubmVscygpOyB9CisgICAgQXVkaW9CdXMqIGJ1cygpIGNvbnN0IHsgcmV0dXJu
IG1fZmlmb0J1cy5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIC8vIFRoZSBzaXplIG9mIHRoZSBG
SUZPLgorICAgIGNvbnN0IHNpemVfdCBtX2ZpZm9MZW5ndGggPSAwOworCisgICAgUmVmUHRyPEF1
ZGlvQnVzPiBtX2ZpZm9CdXM7CisKKyAgICAvLyBUaGUgbnVtYmVyIG9mIGZyYW1lcyBpbiB0aGUg
RklGTyBhY3R1YWxseSBhdmFpbGFibGUgZm9yIHB1bGxpbmcuCisgICAgc2l6ZV90IG1fZnJhbWVz
QXZhaWxhYmxlIHsgMCB9OworCisgICAgc2l6ZV90IG1faW5kZXhSZWFkIHsgMCB9OworICAgIHNp
emVfdCBtX2luZGV4V3JpdGUgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmNwcApp
bmRleCA1MjA1MjdiNTRiYTU3ODZkOGNlYmRmYWI1M2E0NTY4YTkzZGU2ZWQ4Li4yNjUxYzQ4NzA5
NTc0ZDk4MjNjZmRmZTY5ZTg1ZDcwNjgyZWQwMzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmNwcApAQCAtMzksNTEgKzM5LDExMyBAQAogI2lu
Y2x1ZGUgPGVtbWludHJpbi5oPgogI2VuZGlmCiAKLS8vIElucHV0IGJ1ZmZlciBsYXlvdXQsIGRp
dmlkaW5nIHRoZSB0b3RhbCBidWZmZXIgaW50byByZWdpb25zIChyMCAtIHI1KToKKy8vIEluaXRp
YWwgaW5wdXQgYnVmZmVyIGxheW91dCwgZGl2aWRpbmcgaW50byByZWdpb25zIHIwIHRvIHI0IChu
b3RlOiByMCwgcjMKKy8vIGFuZCByNCB3aWxsIG1vdmUgYWZ0ZXIgdGhlIGZpcnN0IGxvYWQpOgog
Ly8KIC8vIHwtLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLXwKIC8vCi0v
LyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja1NpemUg
KyBrZXJuZWxTaXplIC8gMiAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLy8gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9yZXF1ZXN0RnJhbWVzCiAvLyAg
ICAgICAgICAgICAgICAgICA8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+Ci0vLyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcjAKKy8vICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIwIChkdXJpbmcgZmlyc3QgbG9hZCkKIC8v
CiAvLyAgIGtlcm5lbFNpemUgLyAyICAga2VybmVsU2l6ZSAvIDIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBrZXJuZWxTaXplIC8gMiAgICAga2VybmVsU2l6ZSAvIDIgCiAvLyA8LS0t
LS0tLS0tLS0tLS0tPiA8LS0tLS0tLS0tLS0tLS0tPiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDwtLS0tLS0tLS0tLS0tLS0+IDwtLS0tLS0tLS0tLS0tLS0+CiAvLyAgICAgICAgIHIxICAg
ICAgICAgICAgICAgIHIyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcjMgICAgICAgICAgICAgICAgcjQKIC8vIAotLy8gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYmxvY2tTaXplICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ci0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8LS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+Ci0vLyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcjUKKy8vICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX2Jsb2NrU2l6ZSA9PSByNCAtIHIyCisvLyAgICAgICAg
ICAgICAgICAgICA8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPgorLy8K
Ky8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3Jl
cXVlc3RGcmFtZXMKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC0tLS0t
LS0tLS0tLS0tLS0tLSAuLi4gLS0tLS0tLS0tLS0tLS0tLS0+CisvLyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcjAgKGR1cmluZyBzZWNvbmQgbG9hZCkKKy8v
CisvLyBPbiB0aGUgc2Vjb25kIHJlcXVlc3QgcjAgc2xpZGVzIHRvIHRoZSByaWdodCBieSBrZXJu
ZWxTaXplIC8gMiBhbmQgcjMsIHI0CisvLyBhbmQgbV9ibG9ja1NpemUgYXJlIHJlaW5pdGlhbGl6
ZWQgdmlhIHN0ZXAgKDMpIGluIHRoZSBhbGdvcml0aG0gYmVsb3cuCisvLworLy8gVGhlc2UgbmV3
IHJlZ2lvbnMgcmVtYWluIGNvbnN0YW50IHVudGlsIGEgRmx1c2goKSBvY2N1cnMuIFdoaWxlIGNv
bXBsaWNhdGVkLAorLy8gdGhpcyBhbGxvd3MgdXMgdG8gcmVkdWNlIGppdHRlciBieSBhbHdheXMg
cmVxdWVzdGluZyB0aGUgc2FtZSBhbW91bnQgZnJvbSB0aGUKKy8vIHByb3ZpZGVkIGNhbGxiYWNr
LgogCiAvLyBUaGUgQWxnb3JpdGhtOgogLy8KLS8vIDEpIENvbnN1bWUgaW5wdXQgZnJhbWVzIGlu
dG8gcjAgKHIxIGlzIHplcm8taW5pdGlhbGl6ZWQpLgotLy8gMikgUG9zaXRpb24ga2VybmVsIGNl
bnRlcmVkIGF0IHN0YXJ0IG9mIHIwIChyMikgYW5kIGdlbmVyYXRlIG91dHB1dCBmcmFtZXMgdW50
aWwga2VybmVsIGlzIGNlbnRlcmVkIGF0IHN0YXJ0IG9mIHI0LgotLy8gICAgb3Igd2UndmUgZmlu
aXNoZWQgZ2VuZXJhdGluZyBhbGwgdGhlIG91dHB1dCBmcmFtZXMuCi0vLyAzKSBDb3B5IHIzIHRv
IHIxIGFuZCByNCB0byByMi4KLS8vIDQpIENvbnN1bWUgaW5wdXQgZnJhbWVzIGludG8gcjUgKHpl
cm8tcGFkIGlmIHdlIHJ1biBvdXQgb2YgaW5wdXQpLgotLy8gNSkgR290byAoMikgdW50aWwgYWxs
IG9mIGlucHV0IGlzIGNvbnN1bWVkLgorLy8gMSkgQWxsb2NhdGUgaW5wdXRfYnVmZmVyIG9mIHNp
emU6IG1fcmVxdWVzdEZyYW1lcyArIGtlcm5lbFNpemU7IHRoaXMgZW5zdXJlcworLy8gICAgdGhl
cmUncyBlbm91Z2ggcm9vbSB0byByZWFkIG1fcmVxdWVzdEZyYW1lcyBmcm9tIHRoZSBjYWxsYmFj
ayBpbnRvIHJlZ2lvbgorLy8gICAgcjAgKHdoaWNoIHdpbGwgbW92ZSBiZXR3ZWVuIHRoZSBmaXJz
dCBhbmQgc3Vic2VxdWVudCBwYXNzZXMpLgorLy8KKy8vIDIpIExldCByMSwgcjIgZWFjaCByZXBy
ZXNlbnQgaGFsZiB0aGUga2VybmVsIGNlbnRlcmVkIGFyb3VuZCByMDoKKy8vCisvLyAgICAgICAg
cjAgPSBtX2lucHV0QnVmZmVyICsga2VybmVsU2l6ZSAvIDIKKy8vICAgICAgICByMSA9IG1faW5w
dXRCdWZmZXIKKy8vICAgICAgICByMiA9IHIwCisvLworLy8gICAgcjAgaXMgYWx3YXlzIG1fcmVx
dWVzdEZyYW1lcyBpbiBzaXplLiByMSwgcjIgYXJlIGtlcm5lbFNpemUgLyAyIGluCisvLyAgICBz
aXplLiByMSBtdXN0IGJlIHplcm8gaW5pdGlhbGl6ZWQgdG8gYXZvaWQgY29udm9sdXRpb24gd2l0
aCBnYXJiYWdlIChzZWUKKy8vICAgIHN0ZXAgKDUpIGZvciB3aHkpLgorLy8KKy8vIDMpIExldCBy
MywgcjQgZWFjaCByZXByZXNlbnQgaGFsZiB0aGUga2VybmVsIHJpZ2h0IGFsaWduZWQgd2l0aCB0
aGUgZW5kIG9mCisvLyAgICByMCBhbmQgY2hvb3NlIG1fYmxvY2tTaXplIGFzIHRoZSBkaXN0YW5j
ZSBpbiBmcmFtZXMgYmV0d2VlbiByNCBhbmQgcjI6CisvLworLy8gICAgICAgIHIzID0gcjAgKyBt
X3JlcXVlc3RGcmFtZXMgLSBrZXJuZWxTaXplCisvLyAgICAgICAgcjQgPSByMCArIG1fcmVxdWVz
dEZyYW1lcyAtIGtlcm5lbFNpemUgLyAyCisvLyAgICAgICAgbV9ibG9ja1NpemUgPSByNCAtIHIy
ID0gbV9yZXF1ZXN0RnJhbWVzIC0ga2VybmVsU2l6ZSAvIDIKKy8vCisvLyA0KSBDb25zdW1lIG1f
cmVxdWVzdEZyYW1lcyBmcmFtZXMgaW50byByMC4KKy8vCisvLyA1KSBQb3NpdGlvbiBrZXJuZWwg
Y2VudGVyZWQgYXQgc3RhcnQgb2YgcjIgYW5kIGdlbmVyYXRlIG91dHB1dCBmcmFtZXMgdW50aWwK
Ky8vICAgIHRoZSBrZXJuZWwgaXMgY2VudGVyZWQgYXQgdGhlIHN0YXJ0IG9mIHI0IG9yIHdlJ3Zl
IGZpbmlzaGVkIGdlbmVyYXRpbmcKKy8vICAgIGFsbCB0aGUgb3V0cHV0IGZyYW1lcy4KKy8vCisv
LyA2KSBXcmFwIGxlZnQgb3ZlciBkYXRhIGZyb20gdGhlIHIzIHRvIHIxIGFuZCByNCB0byByMi4K
Ky8vCisvLyA3KSBJZiB3ZSdyZSBvbiB0aGUgc2Vjb25kIGxvYWQsIGluIG9yZGVyIHRvIGF2b2lk
IG92ZXJ3cml0aW5nIHRoZSBmcmFtZXMgd2UKKy8vICAgIGp1c3Qgd3JhcHBlZCBmcm9tIHI0IHdl
IG5lZWQgdG8gc2xpZGUgcjAgdG8gdGhlIHJpZ2h0IGJ5IHRoZSBzaXplIG9mCisvLyAgICByNCwg
d2hpY2ggaXMga2VybmVsU2l6ZSAvIDI6CisvLworLy8gICAgICAgIHIwID0gcjAgKyBrZXJuZWxT
aXplIC8gMiA9IG1faW5wdXRCdWZmZXIgKyBrZXJuZWxTaXplCisvLworLy8gICAgcjMsIHI0LCBh
bmQgbV9ibG9ja1NpemUgdGhlbiBuZWVkIHRvIGJlIHJlaW5pdGlhbGl6ZWQsIHNvIGdvdG8gKDMp
LgorLy8KKy8vIDgpIEVsc2UsIGlmIHdlJ3JlIG5vdCBvbiB0aGUgc2Vjb25kIGxvYWQsIGdvdG8g
KDQpLgogLy8KIC8vIG5vdGU6IHdlJ3JlIGdsb3NzaW5nIG92ZXIgaG93IHRoZSBzdWItc2FtcGxl
IGhhbmRsaW5nIHdvcmtzIHdpdGggbV92aXJ0dWFsU291cmNlSW5kZXgsIGV0Yy4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1TaW5jUmVzYW1wbGVyOjpTaW5jUmVzYW1wbGVyKGRvdWJsZSBzY2Fs
ZUZhY3RvciwgdW5zaWduZWQga2VybmVsU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZLZXJuZWxPZmZz
ZXRzKQorY29uc3RleHByIHVuc2lnbmVkIGRlZmF1bHRSZXF1ZXN0RnJhbWVzIHsgNTEyIH07Citj
b25zdGV4cHIgdW5zaWduZWQga2VybmVsU2l6ZSB7IDMyIH07Citjb25zdGV4cHIgdW5zaWduZWQg
bnVtYmVyT2ZLZXJuZWxPZmZzZXRzIHsgMzIgfTsKKworU2luY1Jlc2FtcGxlcjo6U2luY1Jlc2Ft
cGxlcihkb3VibGUgc2NhbGVGYWN0b3IsIE9wdGlvbmFsPHVuc2lnbmVkPiByZXF1ZXN0RnJhbWVz
KQogICAgIDogbV9zY2FsZUZhY3RvcihzY2FsZUZhY3RvcikKLSAgICAsIG1fa2VybmVsU2l6ZShr
ZXJuZWxTaXplKQotICAgICwgbV9udW1iZXJPZktlcm5lbE9mZnNldHMobnVtYmVyT2ZLZXJuZWxP
ZmZzZXRzKQotICAgICwgbV9rZXJuZWxTdG9yYWdlKG1fa2VybmVsU2l6ZSAqIChtX251bWJlck9m
S2VybmVsT2Zmc2V0cyArIDEpKQotICAgICwgbV92aXJ0dWFsU291cmNlSW5kZXgoMCkKLSAgICAs
IG1fYmxvY2tTaXplKDUxMikKLSAgICAsIG1faW5wdXRCdWZmZXIobV9ibG9ja1NpemUgKyBtX2tl
cm5lbFNpemUpIC8vIFNlZSBpbnB1dCBidWZmZXIgbGF5b3V0IGFib3ZlLgotICAgICwgbV9zb3Vy
Y2UoMCkKLSAgICAsIG1fc291cmNlRnJhbWVzQXZhaWxhYmxlKDApCi0gICAgLCBtX3NvdXJjZVBy
b3ZpZGVyKDApCi0gICAgLCBtX2lzQnVmZmVyUHJpbWVkKGZhbHNlKQorICAgICwgbV9rZXJuZWxT
dG9yYWdlKGtlcm5lbFNpemUgKiAobnVtYmVyT2ZLZXJuZWxPZmZzZXRzICsgMSkpCisgICAgLCBt
X3JlcXVlc3RGcmFtZXMocmVxdWVzdEZyYW1lcy52YWx1ZU9yKGRlZmF1bHRSZXF1ZXN0RnJhbWVz
KSkKKyAgICAsIG1faW5wdXRCdWZmZXIobV9yZXF1ZXN0RnJhbWVzICsga2VybmVsU2l6ZSkgLy8g
U2VlIGlucHV0IGJ1ZmZlciBsYXlvdXQgYWJvdmUuCisgICAgLCBtX3IxKG1faW5wdXRCdWZmZXIu
ZGF0YSgpKQorICAgICwgbV9yMihtX2lucHV0QnVmZmVyLmRhdGEoKSArIGtlcm5lbFNpemUgLyAy
KQogeworICAgIEFTU0VSVChtX3JlcXVlc3RGcmFtZXMgPiAwKTsKKyAgICB1cGRhdGVSZWdpb25z
KGZhbHNlKTsKKyAgICBBU1NFUlQobV9ibG9ja1NpemUgPiBrZXJuZWxTaXplKTsKICAgICBpbml0
aWFsaXplS2VybmVsKCk7CiB9CiAKK3ZvaWQgU2luY1Jlc2FtcGxlcjo6dXBkYXRlUmVnaW9ucyhi
b29sIGlzU2Vjb25kTG9hZCkKK3sKKyAgICAvLyBTZXR1cCB2YXJpb3VzIHJlZ2lvbiBwb2ludGVy
cyBpbiB0aGUgYnVmZmVyIChzZWUgZGlhZ3JhbSBhYm92ZSkuIElmIHdlJ3JlCisgICAgLy8gb24g
dGhlIHNlY29uZCBsb2FkIHdlIG5lZWQgdG8gc2xpZGUgbV9yMCB0byB0aGUgcmlnaHQgYnkga2Vy
bmVsU2l6ZSAvIDIuCisgICAgbV9yMCA9IG1faW5wdXRCdWZmZXIuZGF0YSgpICsgKGlzU2Vjb25k
TG9hZCA/IGtlcm5lbFNpemUgOiBrZXJuZWxTaXplIC8gMik7CisgICAgbV9yMyA9IG1fcjAgKyBt
X3JlcXVlc3RGcmFtZXMgLSBrZXJuZWxTaXplOworICAgIG1fcjQgPSBtX3IwICsgbV9yZXF1ZXN0
RnJhbWVzIC0ga2VybmVsU2l6ZSAvIDI7CisgICAgbV9ibG9ja1NpemUgPSBtX3I0IC0gbV9yMjsK
KworICAgIC8vIG1fcjEgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgYnVmZmVyLgorICAgIEFTU0VS
VChtX3IxID09IG1faW5wdXRCdWZmZXIuZGF0YSgpKTsKKyAgICAvLyBtX3IxIGxlZnQgb2YgbV9y
MiwgbV9yNCBsZWZ0IG9mIG1fcjMgYW5kIHNpemUgY29ycmVjdC4KKyAgICBBU1NFUlQoKG1fcjIg
LSBtX3IxKSA9PSAobV9yNCAtIG1fcjMpKTsKKyAgICAvLyBtX3IyIGxlZnQgb2YgcjMuCisgICAg
QVNTRVJUKG1fcjIgPD0gbV9yMyk7Cit9CisKIHZvaWQgU2luY1Jlc2FtcGxlcjo6aW5pdGlhbGl6
ZUtlcm5lbCgpCiB7CiAgICAgLy8gQmxhY2ttYW4gd2luZG93IHBhcmFtZXRlcnMuCkBAIC05OCwx
NiArMTYwLDE2IEBAIHZvaWQgU2luY1Jlc2FtcGxlcjo6aW5pdGlhbGl6ZUtlcm5lbCgpCiAgICAg
Ly8gVGhlIHNpbmMgZnVuY3Rpb24gaXMgYW4gaWRlYWxpemVkIGJyaWNrLXdhbGwgZmlsdGVyLCBi
dXQgc2luY2Ugd2UncmUgd2luZG93aW5nIGl0IHRoZQogICAgIC8vIHRyYW5zaXRpb24gZnJvbSBw
YXNzIHRvIHN0b3AgZG9lcyBub3QgaGFwcGVuIHJpZ2h0IGF3YXkuIFNvIHdlIHNob3VsZCBhZGp1
c3QgdGhlCiAgICAgLy8gbG93cGFzcyBmaWx0ZXIgY3V0b2ZmIHNsaWdodGx5IGRvd253YXJkIHRv
IGF2b2lkIHNvbWUgYWxpYXNpbmcgYXQgdGhlIHZlcnkgaGlnaC1lbmQuCi0gICAgLy8gRklYTUU6
IHRoaXMgdmFsdWUgaXMgZW1waXJpY2FsIGFuZCB0byBiZSBtb3JlIGV4YWN0IHNob3VsZCB2YXJ5
IGRlcGVuZGluZyBvbiBtX2tlcm5lbFNpemUuCisgICAgLy8gRklYTUU6IHRoaXMgdmFsdWUgaXMg
ZW1waXJpY2FsIGFuZCB0byBiZSBtb3JlIGV4YWN0IHNob3VsZCB2YXJ5IGRlcGVuZGluZyBvbiBr
ZXJuZWxTaXplLgogICAgIHNpbmNTY2FsZUZhY3RvciAqPSAwLjk7CiAKLSAgICBpbnQgbiA9IG1f
a2VybmVsU2l6ZTsKKyAgICBpbnQgbiA9IGtlcm5lbFNpemU7CiAgICAgaW50IGhhbGZTaXplID0g
biAvIDI7CiAKICAgICAvLyBHZW5lcmF0ZXMgYSBzZXQgb2Ygd2luZG93ZWQgc2luYygpIGtlcm5l
bHMuCiAgICAgLy8gV2UgZ2VuZXJhdGUgYSByYW5nZSBvZiBzdWItc2FtcGxlIG9mZnNldHMgZnJv
bSAwLjAgdG8gMS4wLgotICAgIGZvciAodW5zaWduZWQgb2Zmc2V0SW5kZXggPSAwOyBvZmZzZXRJ
bmRleCA8PSBtX251bWJlck9mS2VybmVsT2Zmc2V0czsgKytvZmZzZXRJbmRleCkgewotICAgICAg
ICBkb3VibGUgc3Vic2FtcGxlT2Zmc2V0ID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihvZmZzZXRJbmRl
eCkgLyBtX251bWJlck9mS2VybmVsT2Zmc2V0czsKKyAgICBmb3IgKHVuc2lnbmVkIG9mZnNldElu
ZGV4ID0gMDsgb2Zmc2V0SW5kZXggPD0gbnVtYmVyT2ZLZXJuZWxPZmZzZXRzOyArK29mZnNldElu
ZGV4KSB7CisgICAgICAgIGRvdWJsZSBzdWJzYW1wbGVPZmZzZXQgPSBzdGF0aWNfY2FzdDxkb3Vi
bGU+KG9mZnNldEluZGV4KSAvIG51bWJlck9mS2VybmVsT2Zmc2V0czsKIAogICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IG47ICsraSkgewogICAgICAgICAgICAgLy8gQ29tcHV0ZSB0aGUgc2lu
YygpIHdpdGggb2Zmc2V0LgpAQCAtMTIwLDcgKzE4Miw3IEBAIHZvaWQgU2luY1Jlc2FtcGxlcjo6
aW5pdGlhbGl6ZUtlcm5lbCgpCiAgICAgICAgICAgICBkb3VibGUgd2luZG93ID0gYTAgLSBhMSAq
IGNvcygyLjAgKiBwaURvdWJsZSAqIHgpICsgYTIgKiBjb3MoNC4wICogcGlEb3VibGUgKiB4KTsK
IAogICAgICAgICAgICAgLy8gV2luZG93IHRoZSBzaW5jKCkgZnVuY3Rpb24gYW5kIHN0b3JlIGF0
IHRoZSBjb3JyZWN0IG9mZnNldC4KLSAgICAgICAgICAgIG1fa2VybmVsU3RvcmFnZVtpICsgb2Zm
c2V0SW5kZXggKiBtX2tlcm5lbFNpemVdID0gc2luYyAqIHdpbmRvdzsKKyAgICAgICAgICAgIG1f
a2VybmVsU3RvcmFnZVtpICsgb2Zmc2V0SW5kZXggKiBrZXJuZWxTaXplXSA9IHNpbmMgKiB3aW5k
b3c7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0xOTAsNyArMjUyLDcgQEAgdm9pZCBTaW5jUmVz
YW1wbGVyOjpwcm9jZXNzKGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwg
dW5zaWduZWQgbnUKICAgICB1bnNpZ25lZCByZW1haW5pbmcgPSBudW1iZXJPZkRlc3RpbmF0aW9u
RnJhbWVzOwogICAgIAogICAgIHdoaWxlIChyZW1haW5pbmcpIHsKLSAgICAgICAgdW5zaWduZWQg
ZnJhbWVzVGhpc1RpbWUgPSBzdGQ6Om1pbihyZW1haW5pbmcsIG1fYmxvY2tTaXplKTsKKyAgICAg
ICAgdW5zaWduZWQgZnJhbWVzVGhpc1RpbWUgPSBzdGQ6Om1pbihyZW1haW5pbmcsIG1fcmVxdWVz
dEZyYW1lcyk7CiAgICAgICAgIHByb2Nlc3MoJnNvdXJjZVByb3ZpZGVyLCBkZXN0aW5hdGlvbiwg
ZnJhbWVzVGhpc1RpbWUpOwogICAgICAgICAKICAgICAgICAgZGVzdGluYXRpb24gKz0gZnJhbWVz
VGhpc1RpbWU7CkBAIC0yMDAsMjcgKzI2MiwxOCBAQCB2b2lkIFNpbmNSZXNhbXBsZXI6OnByb2Nl
c3MoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBudQog
CiB2b2lkIFNpbmNSZXNhbXBsZXI6OnByb2Nlc3MoQXVkaW9Tb3VyY2VQcm92aWRlciogc291cmNl
UHJvdmlkZXIsIGZsb2F0KiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKIHsK
LSAgICBib29sIGlzR29vZCA9IHNvdXJjZVByb3ZpZGVyICYmIG1fYmxvY2tTaXplID4gbV9rZXJu
ZWxTaXplICYmIG1faW5wdXRCdWZmZXIuc2l6ZSgpID49IG1fYmxvY2tTaXplICsgbV9rZXJuZWxT
aXplICYmICEobV9rZXJuZWxTaXplICUgMik7Ci0gICAgQVNTRVJUKGlzR29vZCk7Ci0gICAgaWYg
KCFpc0dvb2QpCisgICAgQVNTRVJUKHNvdXJjZVByb3ZpZGVyKTsKKyAgICBpZiAoIXNvdXJjZVBy
b3ZpZGVyKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgbV9zb3VyY2VQcm92aWRlciA9IHNv
dXJjZVByb3ZpZGVyOwogCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZEZXN0aW5hdGlvbkZyYW1lcyA9
IGZyYW1lc1RvUHJvY2VzczsKLSAgICAKLSAgICAvLyBTZXR1cCB2YXJpb3VzIHJlZ2lvbiBwb2lu
dGVycyBpbiB0aGUgYnVmZmVyIChzZWUgZGlhZ3JhbSBhYm92ZSkuCi0gICAgZmxvYXQqIHIwID0g
bV9pbnB1dEJ1ZmZlci5kYXRhKCkgKyBtX2tlcm5lbFNpemUgLyAyOwotICAgIGZsb2F0KiByMSA9
IG1faW5wdXRCdWZmZXIuZGF0YSgpOwotICAgIGZsb2F0KiByMiA9IHIwOwotICAgIGZsb2F0KiBy
MyA9IHIwICsgbV9ibG9ja1NpemUgLSBtX2tlcm5lbFNpemUgLyAyOwotICAgIGZsb2F0KiByNCA9
IHIwICsgbV9ibG9ja1NpemU7Ci0gICAgZmxvYXQqIHI1ID0gcjAgKyBtX2tlcm5lbFNpemUgLyAy
OwogCiAgICAgLy8gU3RlcCAoMSkKICAgICAvLyBQcmltZSB0aGUgaW5wdXQgYnVmZmVyIGF0IHRo
ZSBzdGFydCBvZiB0aGUgaW5wdXQgc3RyZWFtLgogICAgIGlmICghbV9pc0J1ZmZlclByaW1lZCkg
ewotICAgICAgICBjb25zdW1lU291cmNlKHIwLCBtX2Jsb2NrU2l6ZSArIG1fa2VybmVsU2l6ZSAv
IDIpOworICAgICAgICBjb25zdW1lU291cmNlKG1fcjAsIG1fcmVxdWVzdEZyYW1lcyk7CiAgICAg
ICAgIG1faXNCdWZmZXJQcmltZWQgPSB0cnVlOwogICAgIH0KICAgICAKQEAgLTIzMiwxNCArMjg1
LDE0IEBAIHZvaWQgU2luY1Jlc2FtcGxlcjo6cHJvY2VzcyhBdWRpb1NvdXJjZVByb3ZpZGVyKiBz
b3VyY2VQcm92aWRlciwgZmxvYXQqIGRlc3RpbmF0CiAgICAgICAgICAgICBpbnQgc291cmNlSW5k
ZXhJID0gc3RhdGljX2Nhc3Q8aW50PihtX3ZpcnR1YWxTb3VyY2VJbmRleCk7CiAgICAgICAgICAg
ICBkb3VibGUgc3Vic2FtcGxlUmVtYWluZGVyID0gbV92aXJ0dWFsU291cmNlSW5kZXggLSBzb3Vy
Y2VJbmRleEk7CiAKLSAgICAgICAgICAgIGRvdWJsZSB2aXJ0dWFsT2Zmc2V0SW5kZXggPSBzdWJz
YW1wbGVSZW1haW5kZXIgKiBtX251bWJlck9mS2VybmVsT2Zmc2V0czsKKyAgICAgICAgICAgIGRv
dWJsZSB2aXJ0dWFsT2Zmc2V0SW5kZXggPSBzdWJzYW1wbGVSZW1haW5kZXIgKiBudW1iZXJPZktl
cm5lbE9mZnNldHM7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0SW5kZXggPSBzdGF0aWNfY2FzdDxp
bnQ+KHZpcnR1YWxPZmZzZXRJbmRleCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGZsb2F0
KiBrMSA9IG1fa2VybmVsU3RvcmFnZS5kYXRhKCkgKyBvZmZzZXRJbmRleCAqIG1fa2VybmVsU2l6
ZTsKLSAgICAgICAgICAgIGZsb2F0KiBrMiA9IGsxICsgbV9rZXJuZWxTaXplOworICAgICAgICAg
ICAgZmxvYXQqIGsxID0gbV9rZXJuZWxTdG9yYWdlLmRhdGEoKSArIG9mZnNldEluZGV4ICoga2Vy
bmVsU2l6ZTsKKyAgICAgICAgICAgIGZsb2F0KiBrMiA9IGsxICsga2VybmVsU2l6ZTsKIAogICAg
ICAgICAgICAgLy8gSW5pdGlhbGl6ZSBpbnB1dCBwb2ludGVyIGJhc2VkIG9uIHF1YW50aXplZCBt
X3ZpcnR1YWxTb3VyY2VJbmRleC4KLSAgICAgICAgICAgIGZsb2F0KiBpbnB1dFAgPSByMSArIHNv
dXJjZUluZGV4STsKKyAgICAgICAgICAgIGZsb2F0KiBpbnB1dFAgPSBtX3IxICsgc291cmNlSW5k
ZXhJOwogCiAgICAgICAgICAgICAvLyBXZSdsbCBjb21wdXRlICJjb252b2x1dGlvbnMiIGZvciB0
aGUgdHdvIGtlcm5lbHMgd2hpY2ggc3RyYWRkbGUgbV92aXJ0dWFsU291cmNlSW5kZXgKICAgICAg
ICAgICAgIGZsb2F0IHN1bTEgPSAwOwpAQCAtMjQ5LDcgKzMwMiw3IEBAIHZvaWQgU2luY1Jlc2Ft
cGxlcjo6cHJvY2VzcyhBdWRpb1NvdXJjZVByb3ZpZGVyKiBzb3VyY2VQcm92aWRlciwgZmxvYXQq
IGRlc3RpbmF0CiAgICAgICAgICAgICBkb3VibGUga2VybmVsSW50ZXJwb2xhdGlvbkZhY3RvciA9
IHZpcnR1YWxPZmZzZXRJbmRleCAtIG9mZnNldEluZGV4OwogCiAgICAgICAgICAgICAvLyBHZW5l
cmF0ZSBhIHNpbmdsZSBvdXRwdXQgc2FtcGxlLiAKLSAgICAgICAgICAgIGludCBuID0gbV9rZXJu
ZWxTaXplOworICAgICAgICAgICAgaW50IG4gPSBrZXJuZWxTaXplOwogCiAjZGVmaW5lIENPTlZP
TFZFX09ORV9TQU1QTEUgICAgICBcCiAgICAgICAgICAgICBpbnB1dCA9ICppbnB1dFArKzsgICBc
CkBAIC00NTUsMTYgKzUwOCwyMCBAQCB2b2lkIFNpbmNSZXNhbXBsZXI6OnByb2Nlc3MoQXVkaW9T
b3VyY2VQcm92aWRlciogc291cmNlUHJvdmlkZXIsIGZsb2F0KiBkZXN0aW5hdAogICAgICAgICB9
CiAKICAgICAgICAgLy8gV3JhcCBiYWNrIGFyb3VuZCB0byB0aGUgc3RhcnQuCisgICAgICAgIEFT
U0VSVChtX3ZpcnR1YWxTb3VyY2VJbmRleCA+PSBtX2Jsb2NrU2l6ZSk7CiAgICAgICAgIG1fdmly
dHVhbFNvdXJjZUluZGV4IC09IG1fYmxvY2tTaXplOwogCi0gICAgICAgIC8vIFN0ZXAgKDMpIENv
cHkgcjMgdG8gcjEgYW5kIHI0IHRvIHIyLgorICAgICAgICAvLyBTdGVwICgzKSBDb3B5IHIzIHRv
IHIxLgogICAgICAgICAvLyBUaGlzIHdyYXBzIHRoZSBsYXN0IGlucHV0IGZyYW1lcyBiYWNrIHRv
IHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLgotICAgICAgICBtZW1jcHkocjEsIHIzLCBzaXplb2Yo
ZmxvYXQpICogKG1fa2VybmVsU2l6ZSAvIDIpKTsKLSAgICAgICAgbWVtY3B5KHIyLCByNCwgc2l6
ZW9mKGZsb2F0KSAqIChtX2tlcm5lbFNpemUgLyAyKSk7CisgICAgICAgIG1lbWNweShtX3IxLCBt
X3IzLCBzaXplb2YoZmxvYXQpICoga2VybmVsU2l6ZSk7CisKKyAgICAgICAgLy8gU3RlcCAoNCkg
LS0gUmVpbml0aWFsaXplIHJlZ2lvbnMgaWYgbmVjZXNzYXJ5LgorICAgICAgICBpZiAobV9yMCA9
PSBtX3IyKQorICAgICAgICAgICAgdXBkYXRlUmVnaW9ucyh0cnVlKTsKIAotICAgICAgICAvLyBT
dGVwICg0KQorICAgICAgICAvLyBTdGVwICg1KQogICAgICAgICAvLyBSZWZyZXNoIHRoZSBidWZm
ZXIgd2l0aCBtb3JlIGlucHV0LgotICAgICAgICBjb25zdW1lU291cmNlKHI1LCBtX2Jsb2NrU2l6
ZSk7CisgICAgICAgIGNvbnN1bWVTb3VyY2UobV9yMCwgbV9yZXF1ZXN0RnJhbWVzKTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNh
bXBsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuaApp
bmRleCBiMTZlYjUxMzI1ODhkYjVmMWE5MTg1NTYwY2RlOTdkODFkYzRkYTI1Li45M2JmMDRkOTBm
MDJiMjdjNzk1OWUxYjkzYjM2NzQyZGRmZDk3YzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5oCkBAIC0zOSwxMSArMzksMTAgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBTaW5jUmVzYW1wbGVyIGZpbmFsIHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKLXB1YmxpYzogICAKK3B1YmxpYzoKICAgICAvLyBzY2FsZUZhY3RvciA9
PSBzb3VyY2VTYW1wbGVSYXRlIC8gZGVzdGluYXRpb25TYW1wbGVSYXRlCi0gICAgLy8ga2VybmVs
U2l6ZSBjYW4gYmUgYWRqdXN0ZWQgZm9yIHF1YWxpdHkgKGhpZ2hlciBpcyBiZXR0ZXIpCi0gICAg
Ly8gbnVtYmVyT2ZLZXJuZWxPZmZzZXRzIGlzIHVzZWQgZm9yIGludGVycG9sYXRpb24gYW5kIGlz
IHRoZSBudW1iZXIgb2Ygc3ViLXNhbXBsZSBrZXJuZWwgc2hpZnRzLgotICAgIFNpbmNSZXNhbXBs
ZXIoZG91YmxlIHNjYWxlRmFjdG9yLCB1bnNpZ25lZCBrZXJuZWxTaXplID0gMzIsIHVuc2lnbmVk
IG51bWJlck9mS2VybmVsT2Zmc2V0cyA9IDMyKTsKKyAgICAvLyByZXF1ZXN0RnJhbWVzIGNvbnRy
b2xzIHRoZSBzaXplIGluIGZyYW1lcyBvZiB0aGUgYnVmZmVyIHJlcXVlc3RlZCBieSBlYWNoIHBy
b3ZpZGVJbnB1dCgpIGNhbGwuCisgICAgU2luY1Jlc2FtcGxlcihkb3VibGUgc2NhbGVGYWN0b3Is
IE9wdGlvbmFsPHVuc2lnbmVkPiByZXF1ZXN0RnJhbWVzID0gV1RGOjpudWxsb3B0KTsKICAgICAK
ICAgICAvLyBQcm9jZXNzZXMgbnVtYmVyT2ZTb3VyY2VGcmFtZXMgZnJvbSBzb3VyY2UgdG8gcHJv
ZHVjZSBudW1iZXJPZlNvdXJjZUZyYW1lcyAvIHNjYWxlRmFjdG9yIGZyYW1lcyBpbiBkZXN0aW5h
dGlvbi4KICAgICB2b2lkIHByb2Nlc3MoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3Rp
bmF0aW9uLCB1bnNpZ25lZCBudW1iZXJPZlNvdXJjZUZyYW1lcyk7CkBAIC01NCwxMCArNTMsOSBA
QCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBpbml0aWFsaXplS2VybmVsKCk7CiAgICAg
dm9pZCBjb25zdW1lU291cmNlKGZsb2F0KiBidWZmZXIsIHVuc2lnbmVkIG51bWJlck9mU291cmNl
RnJhbWVzKTsKKyAgICB2b2lkIHVwZGF0ZVJlZ2lvbnMoYm9vbCBpc1NlY29uZExvYWQpOwogICAg
IAogICAgIGRvdWJsZSBtX3NjYWxlRmFjdG9yOwotICAgIHVuc2lnbmVkIG1fa2VybmVsU2l6ZTsK
LSAgICB1bnNpZ25lZCBtX251bWJlck9mS2VybmVsT2Zmc2V0czsKIAogICAgIC8vIG1fa2VybmVs
U3RvcmFnZSBoYXMgbV9udW1iZXJPZktlcm5lbE9mZnNldHMga2VybmVscyBiYWNrLXRvLWJhY2ss
IGVhY2ggb2Ygc2l6ZSBtX2tlcm5lbFNpemUuCiAgICAgLy8gVGhlIGtlcm5lbCBvZmZzZXRzIGFy
ZSBzdWItc2FtcGxlIHNoaWZ0cyBvZiBhIHdpbmRvd2VkIHNpbmMoKSBzaGlmdGVkIGZyb20gMC4w
IHRvIDEuMCBzYW1wbGUuCkBAIC02NSwyMiArNjMsMzMgQEAgcHJvdGVjdGVkOgogICAgIAogICAg
IC8vIG1fdmlydHVhbFNvdXJjZUluZGV4IGlzIGFuIGluZGV4IG9uIHRoZSBzb3VyY2UgaW5wdXQg
YnVmZmVyIHdpdGggc3ViLXNhbXBsZSBwcmVjaXNpb24uCiAgICAgLy8gSXQgbXVzdCBiZSBkb3Vi
bGUgcHJlY2lzaW9uIHRvIGF2b2lkIGRyaWZ0LgotICAgIGRvdWJsZSBtX3ZpcnR1YWxTb3VyY2VJ
bmRleDsKKyAgICBkb3VibGUgbV92aXJ0dWFsU291cmNlSW5kZXggeyAwIH07CiAgICAgCiAgICAg
Ly8gVGhpcyBpcyB0aGUgbnVtYmVyIG9mIGRlc3RpbmF0aW9uIGZyYW1lcyB3ZSBnZW5lcmF0ZSBw
ZXIgcHJvY2Vzc2luZyBwYXNzIG9uIHRoZSBidWZmZXIuCi0gICAgdW5zaWduZWQgbV9ibG9ja1Np
emU7CisgICAgdW5zaWduZWQgbV9yZXF1ZXN0RnJhbWVzOworCisgICAgLy8gVGhlIG51bWJlciBv
ZiBzb3VyY2UgZnJhbWVzIHByb2Nlc3NlZCBwZXIgcGFzcy4KKyAgICB1bnNpZ25lZCBtX2Jsb2Nr
U2l6ZSB7IDAgfTsKIAogICAgIC8vIFNvdXJjZSBpcyBjb3BpZWQgaW50byB0aGlzIGJ1ZmZlciBm
b3IgZWFjaCBwcm9jZXNzaW5nIHBhc3MuCiAgICAgQXVkaW9GbG9hdEFycmF5IG1faW5wdXRCdWZm
ZXI7CiAKLSAgICBjb25zdCBmbG9hdCogbV9zb3VyY2U7Ci0gICAgdW5zaWduZWQgbV9zb3VyY2VG
cmFtZXNBdmFpbGFibGU7CisgICAgLy8gUG9pbnRlcnMgdG8gdGhlIHZhcmlvdXMgcmVnaW9ucyBp
bnNpZGUgfG1faW5wdXRCdWZmZXJ8LiBTZWUgdGhlIGRpYWdyYW0gYXQKKyAgICAvLyB0aGUgdG9w
IG9mIHRoZSAuY3BwIGZpbGUgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgZmxvYXQqIG1fcjAg
eyBudWxscHRyIH07CisgICAgZmxvYXQqIGNvbnN0IG1fcjEgeyBudWxscHRyIH07CisgICAgZmxv
YXQqIGNvbnN0IG1fcjIgeyBudWxscHRyIH07CisgICAgZmxvYXQqIG1fcjMgeyBudWxscHRyIH07
CisgICAgZmxvYXQqIG1fcjQgeyBudWxscHRyIH07CisKKyAgICBjb25zdCBmbG9hdCogbV9zb3Vy
Y2UgeyBudWxscHRyIH07CisgICAgdW5zaWduZWQgbV9zb3VyY2VGcmFtZXNBdmFpbGFibGUgeyAw
IH07CiAgICAgCiAgICAgLy8gbV9zb3VyY2VQcm92aWRlciBpcyB1c2VkIHRvIHByb3ZpZGUgdGhl
IGF1ZGlvIGlucHV0IHN0cmVhbSB0byB0aGUgcmVzYW1wbGVyLgotICAgIEF1ZGlvU291cmNlUHJv
dmlkZXIqIG1fc291cmNlUHJvdmlkZXI7ICAgIAorICAgIEF1ZGlvU291cmNlUHJvdmlkZXIqIG1f
c291cmNlUHJvdmlkZXIgeyBudWxscHRyIH07CiAKICAgICAvLyBUaGUgYnVmZmVyIGlzIHByaW1l
ZCBvbmNlIGF0IHRoZSB2ZXJ5IGJlZ2lubmluZyBvZiBwcm9jZXNzaW5nLgotICAgIGJvb2wgbV9p
c0J1ZmZlclByaW1lZDsKKyAgICBib29sIG1faXNCdWZmZXJQcmltZWQgeyBmYWxzZSB9OwogCiAg
ICAgUmVmUHRyPEF1ZGlvQnVzPiBtX2ludGVybmFsQnVzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29j
b2EuY3BwCmluZGV4IGFlNjM1MGZjMTFhNDY5NDc4ZTgwYzBiZmMzMzdjMjA4YjgzOTNlNGUuLjc3
NWQ2MmRlOGFkZTc5OTgzN2I0MDVjOWE0MTk2ODI1NGVmNWQyMzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlv
bkNvY29hLmNwcApAQCAtMjksMTMgKzI5LDE2IEBACiAjaWYgRU5BQkxFKFdFQl9BVURJTykKIAog
I2luY2x1ZGUgIkF1ZGlvQnVzLmgiCi0jaW5jbHVkZSAiQXVkaW9JT0NhbGxiYWNrLmgiCiAjaW5j
bHVkZSAiQXVkaW9TZXNzaW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk11
bHRpQ2hhbm5lbFJlc2FtcGxlci5oIgorI2luY2x1ZGUgIlB1c2hQdWxsRklGTy5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNvbnN0IGludCBrUmVuZGVyQnVmZmVyU2l6ZSA9IDEyODsKK2Nv
bnN0ZXhwciBzaXplX3Qga1JlbmRlckJ1ZmZlclNpemUgPSAxMjg7CisKK2NvbnN0ZXhwciBzaXpl
X3QgZmlmb1NpemUgPSA5NiAqIGtSZW5kZXJCdWZmZXJTaXplOwogCiBDcmVhdGVBdWRpb0Rlc3Rp
bmF0aW9uQ29jb2FPdmVycmlkZSBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OmNyZWF0ZU92ZXJyaWRl
ID0gbnVsbHB0cjsKIApAQCAtNjgsMTQgKzcxLDI0IEBAIHVuc2lnbmVkIGxvbmcgQXVkaW9EZXN0
aW5hdGlvbjo6bWF4Q2hhbm5lbENvdW50KCkKICAgICByZXR1cm4gQXVkaW9TZXNzaW9uOjpzaGFy
ZWRTZXNzaW9uKCkubWF4aW11bU51bWJlck9mT3V0cHV0Q2hhbm5lbHMoKTsKIH0KIAorLy8gRklY
TUU6IFdlIHNob3VsZCBub3QgYmUgaGFyZGNvZGluZyB0aGUgbnVtYmVyIG9mIGlucHV0IGNoYW5u
ZWxzLgorY29uc3RleHByIHVuc2lnbmVkIGxlZ2FjeU51bWJlck9mT3V0cHV0Q2hhbm5lbHMgeyAy
IH07CisKIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hKEF1ZGlv
SU9DYWxsYmFjayYgY2FsbGJhY2ssIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBtX291dHB1dFVu
aXQoMCkKICAgICAsIG1fY2FsbGJhY2soY2FsbGJhY2spCi0gICAgLCBtX3JlbmRlckJ1cyhBdWRp
b0J1czo6Y3JlYXRlKDIsIGtSZW5kZXJCdWZmZXJTaXplLCBmYWxzZSkucmVsZWFzZU5vbk51bGwo
KSkKLSAgICAsIG1fc3BhcmVCdXMoQXVkaW9CdXM6OmNyZWF0ZSgyLCBrUmVuZGVyQnVmZmVyU2l6
ZSwgdHJ1ZSkucmVsZWFzZU5vbk51bGwoKSkKLSAgICAsIG1fc2FtcGxlUmF0ZShzYW1wbGVSYXRl
KQorICAgICwgbV9vdXRwdXRCdXMoQXVkaW9CdXM6OmNyZWF0ZShsZWdhY3lOdW1iZXJPZk91dHB1
dENoYW5uZWxzLCBrUmVuZGVyQnVmZmVyU2l6ZSwgZmFsc2UpLnJlbGVhc2VOb25OdWxsKCkpCisg
ICAgLCBtX3JlbmRlckJ1cyhBdWRpb0J1czo6Y3JlYXRlKGxlZ2FjeU51bWJlck9mT3V0cHV0Q2hh
bm5lbHMsIGtSZW5kZXJCdWZmZXJTaXplKS5yZWxlYXNlTm9uTnVsbCgpKQorICAgICwgbV9maWZv
KG1ha2VVbmlxdWVSZWY8UHVzaFB1bGxGSUZPPihsZWdhY3lOdW1iZXJPZk91dHB1dENoYW5uZWxz
LCBmaWZvU2l6ZSkpCisgICAgLCBtX2NvbnRleHRTYW1wbGVSYXRlKHNhbXBsZVJhdGUpCiB7CiAg
ICAgY29uZmlndXJlKCk7CisKKyAgICBhdXRvIGhhcmR3YXJlU2FtcGxlUmF0ZSA9IHRoaXMtPmhh
cmR3YXJlU2FtcGxlUmF0ZSgpOworICAgIGlmIChzYW1wbGVSYXRlICE9IGhhcmR3YXJlU2FtcGxl
UmF0ZSkgeworICAgICAgICBkb3VibGUgc2NhbGVGYWN0b3IgPSBzdGF0aWNfY2FzdDxkb3VibGU+
KHNhbXBsZVJhdGUpIC8gaGFyZHdhcmVTYW1wbGVSYXRlOworICAgICAgICBtX3Jlc2FtcGxlciA9
IG1ha2VVbmlxdWU8TXVsdGlDaGFubmVsUmVzYW1wbGVyPihzY2FsZUZhY3RvciwgbGVnYWN5TnVt
YmVyT2ZPdXRwdXRDaGFubmVscywga1JlbmRlckJ1ZmZlclNpemUpOworICAgIH0KIH0KIAogQXVk
aW9EZXN0aW5hdGlvbkNvY29hOjp+QXVkaW9EZXN0aW5hdGlvbkNvY29hKCkKQEAgLTExNiwxMSAr
MTI5LDExIEBAIHZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzZXRJc1BsYXlpbmcoYm9vbCBp
c1BsYXlpbmcpCiAgICAgbV9jYWxsYmFjay5pc1BsYXlpbmdEaWRDaGFuZ2UoKTsKIH0KIAotdm9p
ZCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihB
dWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24mIHN0cmVhbUZvcm1hdCwgZmxvYXQgc2FtcGxlUmF0
ZSkKK3ZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3Jp
cHRpb24oQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiBzdHJlYW1Gb3JtYXQpCiB7CiAgICAg
Y29uc3QgaW50IGJ5dGVzUGVyRmxvYXQgPSBzaXplb2YoRmxvYXQzMik7CiAgICAgY29uc3QgaW50
IGJpdHNQZXJCeXRlID0gODsKLSAgICBzdHJlYW1Gb3JtYXQubVNhbXBsZVJhdGUgPSBzYW1wbGVS
YXRlOworICAgIHN0cmVhbUZvcm1hdC5tU2FtcGxlUmF0ZSA9IGhhcmR3YXJlU2FtcGxlUmF0ZSgp
OwogICAgIHN0cmVhbUZvcm1hdC5tRm9ybWF0SUQgPSBrQXVkaW9Gb3JtYXRMaW5lYXJQQ007CiAg
ICAgc3RyZWFtRm9ybWF0Lm1Gb3JtYXRGbGFncyA9IGtBdWRpb0Zvcm1hdEZsYWdzTmF0aXZlRmxv
YXRQYWNrZWQgfCBrQXVkaW9Gb3JtYXRGbGFnSXNOb25JbnRlcmxlYXZlZDsKICAgICBzdHJlYW1G
b3JtYXQubUJ5dGVzUGVyUGFja2V0ID0gYnl0ZXNQZXJGbG9hdDsKQEAgLTE0Myw0NCArMTU2LDMx
IEBAIHN0YXRpYyB2b2lkIGFzc2lnbkF1ZGlvQnVmZmVyc1RvQnVzKEF1ZGlvQnVmZmVyKiBidWZm
ZXJzLCBBdWRpb0J1cyYgYnVzLCBVSW50MzIKIC8vIFB1bGxzIG9uIG91ciBwcm92aWRlciB0byBn
ZXQgcmVuZGVyZWQgYXVkaW8gc3RyZWFtLgogT1NTdGF0dXMgQXVkaW9EZXN0aW5hdGlvbkNvY29h
OjpyZW5kZXIoY29uc3QgQXVkaW9UaW1lU3RhbXAqIHRpbWVzdGFtcCwgVUludDMyIG51bWJlck9m
RnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSkKIHsKLSAgICBBdWRpb0lPUG9zaXRpb24g
b3V0cHV0VGltZXN0YW1wOworICAgIGlmIChtX2ZpZm8tPmxlbmd0aCgpIDwgbnVtYmVyT2ZGcmFt
ZXMpCisgICAgICAgIHJldHVybiBub0VycjsKKwogICAgIGlmICh0aW1lc3RhbXApIHsKLSAgICAg
ICAgb3V0cHV0VGltZXN0YW1wID0gewotICAgICAgICAgICAgU2Vjb25kcyB7IHRpbWVzdGFtcC0+
bVNhbXBsZVRpbWUgLyBtX3NhbXBsZVJhdGUgfSwKKyAgICAgICAgbV9vdXRwdXRUaW1lc3RhbXAg
PSB7CisgICAgICAgICAgICBTZWNvbmRzIHsgdGltZXN0YW1wLT5tU2FtcGxlVGltZSAvIHNhbXBs
ZVJhdGUoKSB9LAogICAgICAgICAgICAgTW9ub3RvbmljVGltZTo6ZnJvbU1hY2hBYnNvbHV0ZVRp
bWUodGltZXN0YW1wLT5tSG9zdFRpbWUpCiAgICAgICAgIH07Ci0gICAgfQorICAgIH0gZWxzZQor
ICAgICAgICBtX291dHB1dFRpbWVzdGFtcCA9IEF1ZGlvSU9Qb3NpdGlvbiB7IH07CisKICAgICBh
dXRvKiBidWZmZXJzID0gaW9EYXRhLT5tQnVmZmVyczsKICAgICBVSW50MzIgbnVtYmVyT2ZCdWZm
ZXJzID0gaW9EYXRhLT5tTnVtYmVyQnVmZmVyczsKLSAgICBVSW50MzIgZnJhbWVzUmVtYWluaW5n
ID0gbnVtYmVyT2ZGcmFtZXM7Ci0gICAgVUludDMyIGZyYW1lT2Zmc2V0ID0gMDsKLSAgICB3aGls
ZSAoZnJhbWVzUmVtYWluaW5nID4gMCkgewotICAgICAgICBpZiAobV9zdGFydFNwYXJlRnJhbWUg
PCBtX2VuZFNwYXJlRnJhbWUpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX3N0YXJ0U3BhcmVGcmFt
ZSA8IG1fZW5kU3BhcmVGcmFtZSk7Ci0gICAgICAgICAgICBVSW50MzIgZnJhbWVzVGhpc1RpbWUg
PSBzdGQ6Om1pbjxVSW50MzI+KG1fZW5kU3BhcmVGcmFtZSAtIG1fc3RhcnRTcGFyZUZyYW1lLCBu
dW1iZXJPZkZyYW1lcyk7Ci0gICAgICAgICAgICBhc3NpZ25BdWRpb0J1ZmZlcnNUb0J1cyhidWZm
ZXJzLCBtX3JlbmRlckJ1cy5nZXQoKSwgbnVtYmVyT2ZCdWZmZXJzLCBudW1iZXJPZkZyYW1lcywg
ZnJhbWVPZmZzZXQsIGZyYW1lc1RoaXNUaW1lKTsKLSAgICAgICAgICAgIG1fcmVuZGVyQnVzLT5j
b3B5RnJvbVJhbmdlKG1fc3BhcmVCdXMuZ2V0KCksIG1fc3RhcnRTcGFyZUZyYW1lLCBtX2VuZFNw
YXJlRnJhbWUpOwotICAgICAgICAgICAgcHJvY2Vzc0J1c0FmdGVyUmVuZGVyKG1fcmVuZGVyQnVz
LmdldCgpLCBmcmFtZXNUaGlzVGltZSk7Ci0gICAgICAgICAgICBmcmFtZU9mZnNldCArPSBmcmFt
ZXNUaGlzVGltZTsKLSAgICAgICAgICAgIGZyYW1lc1JlbWFpbmluZyAtPSBmcmFtZXNUaGlzVGlt
ZTsKLSAgICAgICAgICAgIG1fc3RhcnRTcGFyZUZyYW1lICs9IGZyYW1lc1RoaXNUaW1lOwotICAg
ICAgICB9Ci0KLSAgICAgICAgVUludDMyIGZyYW1lc1RoaXNUaW1lID0gc3RkOjptaW48VUludDMy
PihrUmVuZGVyQnVmZmVyU2l6ZSwgZnJhbWVzUmVtYWluaW5nKTsKLSAgICAgICAgYXNzaWduQXVk
aW9CdWZmZXJzVG9CdXMoYnVmZmVycywgbV9yZW5kZXJCdXMuZ2V0KCksIG51bWJlck9mQnVmZmVy
cywgbnVtYmVyT2ZGcmFtZXMsIGZyYW1lT2Zmc2V0LCBmcmFtZXNUaGlzVGltZSk7Ci0KLSAgICAg
ICAgaWYgKCFmcmFtZXNUaGlzVGltZSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAo
ZnJhbWVzVGhpc1RpbWUgPCBrUmVuZGVyQnVmZmVyU2l6ZSkgewotICAgICAgICAgICAgbV9jYWxs
YmFjay5yZW5kZXIoMCwgbV9zcGFyZUJ1cy5wdHIoKSwga1JlbmRlckJ1ZmZlclNpemUsIG91dHB1
dFRpbWVzdGFtcCk7Ci0gICAgICAgICAgICBtX3JlbmRlckJ1cy0+Y29weUZyb21SYW5nZShtX3Nw
YXJlQnVzLmdldCgpLCAwLCBmcmFtZXNUaGlzVGltZSk7Ci0gICAgICAgICAgICBtX3N0YXJ0U3Bh
cmVGcmFtZSA9IGZyYW1lc1RoaXNUaW1lOwotICAgICAgICAgICAgbV9lbmRTcGFyZUZyYW1lID0g
a1JlbmRlckJ1ZmZlclNpemU7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbV9jYWxsYmFj
ay5yZW5kZXIoMCwgbV9yZW5kZXJCdXMucHRyKCksIGZyYW1lc1RoaXNUaW1lLCBvdXRwdXRUaW1l
c3RhbXApOwotICAgICAgICBwcm9jZXNzQnVzQWZ0ZXJSZW5kZXIobV9yZW5kZXJCdXMuZ2V0KCks
IGZyYW1lc1RoaXNUaW1lKTsKLSAgICAgICAgZnJhbWVPZmZzZXQgKz0gZnJhbWVzVGhpc1RpbWU7
Ci0gICAgICAgIGZyYW1lc1JlbWFpbmluZyAtPSBmcmFtZXNUaGlzVGltZTsKKworICAgIC8vIEFz
c29jaWF0ZSB0aGUgZGVzdGluYXRpb24gZGF0YSBhcnJheSB3aXRoIHRoZSBvdXRwdXQgYnVzIHRo
ZW4gZmlsbCB0aGUgRklGTy4KKyAgICBhc3NpZ25BdWRpb0J1ZmZlcnNUb0J1cyhidWZmZXJzLCBt
X291dHB1dEJ1cy5nZXQoKSwgbnVtYmVyT2ZCdWZmZXJzLCBudW1iZXJPZkZyYW1lcywgMCwgbnVt
YmVyT2ZGcmFtZXMpOworICAgIHNpemVfdCBmcmFtZXNUb1JlbmRlciA9IG1fZmlmby0+cHVsbCht
X291dHB1dEJ1cy5wdHIoKSwgbnVtYmVyT2ZGcmFtZXMpOworCisgICAgZm9yIChzaXplX3QgcHVz
aGVkRnJhbWVzID0gMDsgcHVzaGVkRnJhbWVzIDwgZnJhbWVzVG9SZW5kZXI7IHB1c2hlZEZyYW1l
cyArPSBrUmVuZGVyQnVmZmVyU2l6ZSkgeworICAgICAgICBpZiAobV9yZXNhbXBsZXIpCisgICAg
ICAgICAgICBtX3Jlc2FtcGxlci0+cHJvY2Vzcyh0aGlzLCBtX3JlbmRlckJ1cy5wdHIoKSwga1Jl
bmRlckJ1ZmZlclNpemUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2NhbGxiYWNrLnJl
bmRlcigwLCBtX3JlbmRlckJ1cy5wdHIoKSwga1JlbmRlckJ1ZmZlclNpemUsIG1fb3V0cHV0VGlt
ZXN0YW1wKTsKKworICAgICAgICBtX2ZpZm8tPnB1c2gobV9yZW5kZXJCdXMucHRyKCkpOwogICAg
IH0KIAogICAgIHJldHVybiBub0VycjsKQEAgLTE5Myw2ICsxOTMsMTIgQEAgT1NTdGF0dXMgQXVk
aW9EZXN0aW5hdGlvbkNvY29hOjppbnB1dFByb2Modm9pZCogdXNlckRhdGEsIEF1ZGlvVW5pdFJl
bmRlckFjdGlvbkYKICAgICByZXR1cm4gYXVkaW9PdXRwdXQtPnJlbmRlcih0aW1lc3RhbXAsIG51
bWJlck9mRnJhbWVzLCBpb0RhdGEpOwogfQogCit2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6
cHJvdmlkZUlucHV0KEF1ZGlvQnVzKiBidXMsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCit7Cisg
ICAgQVNTRVJUX1VOVVNFRChmcmFtZXNUb1Byb2Nlc3MsIGZyYW1lc1RvUHJvY2VzcyA9PSBrUmVu
ZGVyQnVmZmVyU2l6ZSk7CisgICAgbV9jYWxsYmFjay5yZW5kZXIoMCwgYnVzLCBrUmVuZGVyQnVm
ZmVyU2l6ZSwgbV9vdXRwdXRUaW1lc3RhbXApOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaAppbmRl
eCAzOTI4OGVhOWZiMzI0YmJhMzFkMTdjMjM2MDhlMTE1Y2FjYzAzMWFlLi5hZmI2MzA5Mjc2NTYw
MDRlOGVhOTUxY2YxMzZhMTMwNzc0ZTIzNTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaApAQCAt
MjgsMTcgKzI4LDIyIEBACiAjaWYgRU5BQkxFKFdFQl9BVURJTykKIAogI2luY2x1ZGUgIkF1ZGlv
RGVzdGluYXRpb24uaCIKKyNpbmNsdWRlICJBdWRpb0lPQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJB
dWRpb1NvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSA8QXVkaW9Vbml0L0F1ZGlvVW5pdC5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9CdXM7CitjbGFzcyBNdWx0aUNoYW5uZWxS
ZXNhbXBsZXI7CitjbGFzcyBQdXNoUHVsbEZJRk87CiAKIHVzaW5nIENyZWF0ZUF1ZGlvRGVzdGlu
YXRpb25Db2NvYU92ZXJyaWRlID0gc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVzdGluYXRpb24+KCop
KEF1ZGlvSU9DYWxsYmFjayYsIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAvLyBBbiBBdWRpb0Rlc3Rp
bmF0aW9uIHVzaW5nIENvcmVBdWRpbydzIGRlZmF1bHQgb3V0cHV0IEF1ZGlvVW5pdAotY2xhc3Mg
QXVkaW9EZXN0aW5hdGlvbkNvY29hIDogcHVibGljIEF1ZGlvRGVzdGluYXRpb24geworY2xhc3Mg
QXVkaW9EZXN0aW5hdGlvbkNvY29hIDogcHVibGljIEF1ZGlvRGVzdGluYXRpb24sIHB1YmxpYyBB
dWRpb1NvdXJjZVByb3ZpZGVyIHsKIHB1YmxpYzoKICAgICBBdWRpb0Rlc3RpbmF0aW9uQ29jb2Eo
QXVkaW9JT0NhbGxiYWNrJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAgICAgdmlydHVhbCB+QXVkaW9E
ZXN0aW5hdGlvbkNvY29hKCk7CkBAIC00OSwxNCArNTQsMTQgQEAgcHJvdGVjdGVkOgogICAgIHZv
aWQgc2V0SXNQbGF5aW5nKGJvb2wpOwogCiAgICAgYm9vbCBpc1BsYXlpbmcoKSBmaW5hbCB7IHJl
dHVybiBtX2lzUGxheWluZzsgfQotICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX3NhbXBsZVJhdGU7IH0KKyAgICBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9jb250ZXh0U2FtcGxlUmF0ZTsgfQogICAgIHVuc2lnbmVkIGZyYW1lc1Bl
ckJ1ZmZlcigpIGNvbnN0IGZpbmFsOwogICAgIEF1ZGlvVW5pdCYgb3V0cHV0VW5pdCgpIHsgcmV0
dXJuIG1fb3V0cHV0VW5pdDsgfQogICAgIAogICAgIC8vIERlZmF1bHRPdXRwdXRVbml0IGNhbGxi
YWNrCiAgICAgc3RhdGljIE9TU3RhdHVzIGlucHV0UHJvYyh2b2lkKiB1c2VyRGF0YSwgQXVkaW9V
bml0UmVuZGVyQWN0aW9uRmxhZ3MqLCBjb25zdCBBdWRpb1RpbWVTdGFtcCosIFVJbnQzMiBidXNO
dW1iZXIsIFVJbnQzMiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpOwog
Ci0gICAgdm9pZCBzZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oQXVkaW9TdHJlYW1CYXNp
Y0Rlc2NyaXB0aW9uJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgdm9pZCBzZXRBdWRpb1N0cmVh
bUJhc2ljRGVzY3JpcHRpb24oQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJik7CiAKIHByaXZh
dGU6CiAgICAgdm9pZCBzdGFydCgpIG92ZXJyaWRlOwpAQCAtNjQsNiArNjksOSBAQCBwcml2YXRl
OgogCiAgICAgZnJpZW5kIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0Rlc3RpbmF0aW9uPiBBdWRpb0Rl
c3RpbmF0aW9uOjpjcmVhdGUoQXVkaW9JT0NhbGxiYWNrJiwgY29uc3QgU3RyaW5nJiwgdW5zaWdu
ZWQsIHVuc2lnbmVkLCBmbG9hdCk7CiAgICAgCisgICAgLy8gQXVkaW9Tb3VyY2VQcm92aWRlci4K
KyAgICB2b2lkIHByb3ZpZGVJbnB1dChBdWRpb0J1cyosIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3Mp
IGZpbmFsOworCiAgICAgdm9pZCBjb25maWd1cmUoKTsKICAgICB2b2lkIHByb2Nlc3NCdXNBZnRl
clJlbmRlcihBdWRpb0J1cyYsIFVJbnQzMiBudW1iZXJPZkZyYW1lcyk7CiAKQEAgLTcxLDE0ICs3
OSwyMiBAQCBwcml2YXRlOgogCiAgICAgQXVkaW9Vbml0IG1fb3V0cHV0VW5pdDsKICAgICBBdWRp
b0lPQ2FsbGJhY2smIG1fY2FsbGJhY2s7CisKKyAgICAvLyBUbyBwYXNzIHRoZSBkYXRhIGZyb20g
RklGTyB0byB0aGUgYXVkaW8gZGV2aWNlIGNhbGxiYWNrLgorICAgIFJlZjxBdWRpb0J1cz4gbV9v
dXRwdXRCdXM7CisKKyAgICAvLyBUbyBwdXNoIHRoZSByZW5kZXJlZCByZXN1bHQgZnJvbSBXZWJB
dWRpbyBncmFwaCBpbnRvIHRoZSBGSUZPLgogICAgIFJlZjxBdWRpb0J1cz4gbV9yZW5kZXJCdXM7
Ci0gICAgUmVmPEF1ZGlvQnVzPiBtX3NwYXJlQnVzOwogCi0gICAgZmxvYXQgbV9zYW1wbGVSYXRl
OwotICAgIGJvb2wgbV9pc1BsYXlpbmcgeyBmYWxzZSB9OworICAgIC8vIFJlc29sdmVzIHRoZSBi
dWZmZXIgc2l6ZSBtaXNtYXRjaCBiZXR3ZWVuIHRoZSBXZWJBdWRpbyBlbmdpbmUgYW5kCisgICAg
Ly8gdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIGZyb20gdGhlIGFjdHVhbCBhdWRpbyBkZXZpY2UuCisg
ICAgVW5pcXVlUmVmPFB1c2hQdWxsRklGTz4gbV9maWZvOworCisgICAgc3RkOjp1bmlxdWVfcHRy
PE11bHRpQ2hhbm5lbFJlc2FtcGxlcj4gbV9yZXNhbXBsZXI7CisgICAgQXVkaW9JT1Bvc2l0aW9u
IG1fb3V0cHV0VGltZXN0YW1wOwogCi0gICAgdW5zaWduZWQgbV9zdGFydFNwYXJlRnJhbWUgeyAw
IH07Ci0gICAgdW5zaWduZWQgbV9lbmRTcGFyZUZyYW1lIHsgMCB9OworICAgIGZsb2F0IG1fY29u
dGV4dFNhbXBsZVJhdGU7CisgICAgYm9vbCBtX2lzUGxheWluZyB7IGZhbHNlIH07CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAKaW5kZXggMzkyOTUyMzZlMzAz
ZTBjMTg3MDVmZmJlZTU0NmI0ODhjNTJhYmVlNS4uYzQ3MzNkZTdmNzVkYTlhYjZkMDg3YTIzMWFk
OGViOTgxZGM2ODg4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
aW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2b2lk
IEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6Y29uZmlndXJlKCkKICAgICByZXN1bHQgPSBBdWRpb1Vu
aXRHZXRQcm9wZXJ0eShvdXRwdXRVbml0KCksIGtBdWRpb1VuaXRQcm9wZXJ0eV9TdHJlYW1Gb3Jt
YXQsIGtBdWRpb1VuaXRTY29wZV9PdXRwdXQsIDAsICh2b2lkKikmc3RyZWFtRm9ybWF0LCAmc2l6
ZSk7CiAgICAgQVNTRVJUKCFyZXN1bHQpOwogCi0gICAgc2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2Ny
aXB0aW9uKHN0cmVhbUZvcm1hdCwgc2FtcGxlUmF0ZSgpKTsKKyAgICBzZXRBdWRpb1N0cmVhbUJh
c2ljRGVzY3JpcHRpb24oc3RyZWFtRm9ybWF0KTsKIAogICAgIHJlc3VsdCA9IEF1ZGlvVW5pdFNl
dFByb3BlcnR5KG91dHB1dFVuaXQoKSwga0F1ZGlvVW5pdFByb3BlcnR5X1N0cmVhbUZvcm1hdCwg
a0F1ZGlvVW5pdFNjb3BlX0lucHV0LCAwLCAodm9pZCopJnN0cmVhbUZvcm1hdCwgc2l6ZW9mKEF1
ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbikpOwogICAgIEFTU0VSVCghcmVzdWx0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9u
TWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0
aW9uTWFjLmNwcAppbmRleCA3YTAxZWFlMDZlMjkwMzJmZDA1OThhMDBlMzRkZTIzNTdkMmE1N2E0
Li5mZjY5NDNiMzgwM2ExYjI1NTJiNThlYzI3MjUwMTQ1Y2Q4ZWE0OGEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25N
YWMuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpjb25m
aWd1cmUoKQogCiAgICAgLy8gU2V0IHN0cmVhbSBmb3JtYXQKICAgICBBdWRpb1N0cmVhbUJhc2lj
RGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OwotICAgIHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlw
dGlvbihzdHJlYW1Gb3JtYXQsIHNhbXBsZVJhdGUoKSk7CisgICAgc2V0QXVkaW9TdHJlYW1CYXNp
Y0Rlc2NyaXB0aW9uKHN0cmVhbUZvcm1hdCk7CiAKICAgICByZXN1bHQgPSBBdWRpb1VuaXRTZXRQ
cm9wZXJ0eShvdXRwdXRVbml0KCksIGtBdWRpb1VuaXRQcm9wZXJ0eV9TdHJlYW1Gb3JtYXQsIGtB
dWRpb1VuaXRTY29wZV9JbnB1dCwgMCwgKHZvaWQqKSZzdHJlYW1Gb3JtYXQsIHNpemVvZihBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24pKTsKICAgICBBU1NFUlQoIXJlc3VsdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2Fw
dHVyZURldmljZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Nv
cmVBdWRpb0NhcHR1cmVEZXZpY2UuaAppbmRleCA1Mjg4N2VjMjIzZTczMWIwOTdlYTA0NjI4YTYx
YmM0NzVjOGNjMTZjLi41OGExMmE5MTE0ZjZmZmUyZDQ0NzliOTFlYTA5YjdmMmQwZTAzNjIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1
ZGlvQ2FwdHVyZURldmljZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShNQUMpCiAKICNpbmNsdWRlICJDYXB0dXJl
RGV2aWNlLmgiCisjaW5jbHVkZSA8cGFsL3NwaS9jZi9Db3JlQXVkaW9TUEkuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja0F1ZGlvRGVzdGluYXRpb25D
b2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tBdWRpb0Rlc3RpbmF0
aW9uQ29jb2EuY3BwCmluZGV4IDg2M2M0ZDU0YmY5NzhkMjhlYjUxMTM2NzI0MDE4ZGQxNzEzMzRj
ZDMuLjhlM2FmMDM1MzZjMmQzYjc2Yjg2MzU2OGY4NzQ5NGI1YTNjMWY0YzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja0F1ZGlvRGVzdGluYXRpb25Db2NvYS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrQXVkaW9EZXN0aW5hdGlv
bkNvY29hLmNwcApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIE1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29j
b2E6OnRpY2soKQogewogICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgc2FtcGxlUmF0
ZSA9IHNhbXBsZVJhdGUoKSwgbnVtYmVyT2ZGcmFtZXNUb1Byb2Nlc3MgPSBtX251bWJlck9mRnJh
bWVzVG9Qcm9jZXNzXSB7CiAgICAgICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJl
YW1Gb3JtYXQ7Ci0gICAgICAgIHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihzdHJlYW1G
b3JtYXQsIHNhbXBsZVJhdGUpOworICAgICAgICBzZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRp
b24oc3RyZWFtRm9ybWF0KTsKIAogICAgICAgICBXZWJBdWRpb0J1ZmZlckxpc3Qgd2ViQXVkaW9C
dWZmZXJMaXN0IHsgc3RyZWFtRm9ybWF0LCBudW1iZXJPZkZyYW1lc1RvUHJvY2VzcyB9OwogICAg
ICAgICBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OmlucHV0UHJvYyh0aGlzLCAwLCAwLCAwLCBudW1i
ZXJPZkZyYW1lc1RvUHJvY2Vzcywgd2ViQXVkaW9CdWZmZXJMaXN0Lmxpc3QoKSk7Cg==
</data>
<flag name="commit-queue"
          id="424022"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408579</attachid>
            <date>2020-09-11 18:38:41 -0700</date>
            <delta_ts>2020-09-11 19:26:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216425-20200911183841.patch</filename>
            <type>text/plain</type>
            <size>67126</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2OTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTk4OWVhNTIyNDI0MGRl
ZWVkYTdlYzgzNzVkNzMxMzY0MWQ0MWJkYS4uY2Y1ZWZhOTI4MzQxNjU1Nzg0OTQzYzc1NDcyZDk0
YzcwMmMwNGM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDIwLTA5LTExICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHByb3BlciBzdXBwb3J0
IGZvciBBdWRpb0NvbnRleHRPcHRpb25zLnNhbXBsZVJhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjQyNQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBwcm9wZXIgc3VwcG9ydCBmb3IgQXVkaW9D
b250ZXh0T3B0aW9ucy5zYW1wbGVSYXRlLiBQcmV2aW91c2x5LCBvdXIgQXVkaW9Db250ZXh0IGFs
d2F5cyBydW4KKyAgICAgICAgYXQgdGhlIGhhcmR3YXJlJ3Mgc2FtcGxlUmF0ZSwgbm8gbWF0dGVy
IHdoYXQgdmFsdWUgZm9yIHNldCBmb3IgQXVkaW9Db250ZXh0T3B0aW9ucy5zYW1wbGVSYXRlLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYmFzZWQgb24gdGhlIGZvbGxvd2luZyBDaHJvbWl1bSBj
aGFuZ2VzOgorICAgICAgICAtIGh0dHBzOi8vY2hyb21pdW0tcmV2aWV3Lmdvb2dsZXNvdXJjZS5j
b20vYy9jaHJvbWl1bS9zcmMvKy8xNDgyOTU3CisgICAgICAgIC0gaHR0cHM6Ly9jb2RlcmV2aWV3
LmNocm9taXVtLm9yZy8yNTQ5MDkzMDA5CisgICAgICAgIC0gaHR0cHM6Ly9jb2RlcmV2aWV3LmNo
cm9taXVtLm9yZy8xNDE4OTAzNQorCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0
QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVmYXVsdEF1ZGlv
RGVzdGluYXRpb25Ob2RlOjpjcmVhdGVEZXN0aW5hdGlvbik6CisgICAgICAgIFdoZW4gY3JlYXRp
bmcgYSBBdWRpb0Rlc3RpbmF0aW9uLCBwYXNzIHRoZSByZXF1ZXN0ZWQgQXVkaW9Db250ZXh0IHNh
bXBsZSByYXRlCisgICAgICAgIGluc3RlYWQgb2YgdGhlIGhhcmR3YXJlIHNhbXBsZSByYXRlLgor
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9GSUZPLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmg6IFJlbW92ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vUHVzaFB1bGxGSUZPLmNwcDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vUHVzaFB1bGxGSUZPLmg6IEFkZGVkLgorICAgICAgICBSZXBsYWNlIEF1ZGlv
RklGTyBhbmQgQXVkaW9QdWxsRklGTyB3aXRoIGEgbmV3IFB1c2hQdWxsRklGTyByZXBsYWNlbWVu
dCwgc2ltaWxhcmx5CisgICAgICAgIHRvIHdoYXQgd2FzIGRvbmUgaW4gQ2hyb21pdW0gaW46Cisg
ICAgICAgIC0gaHR0cHM6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8yNTQ5MDkzMDA5CisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TXVsdGlDaGFubmVsUmVzYW1wbGVyOjpNdWx0aUNoYW5uZWxSZXNhbXBsZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2luY1Jlc2FtcGxlcjo6U2luY1Jlc2FtcGxlcik6CisgICAgICAgIChXZWJDb3JlOjpTaW5j
UmVzYW1wbGVyOjp1cGRhdGVSZWdpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbmNSZXNhbXBs
ZXI6OmluaXRpYWxpemVLZXJuZWwpOgorICAgICAgICAoV2ViQ29yZTo6U2luY1Jlc2FtcGxlcjo6
cHJvY2Vzcyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5oOgorICAg
ICAgICBBZGQgcGFyYW1ldGVyIHRvIE11bHRpQ2hhbm5lbFJlc2FtcGxlciAmIFNpbmNSZXNhbXBs
ZXIgdG8gYWxsb3cgdGhlIGNsaWVudCB0byBzcGVjaWZ5CisgICAgICAgIHRoZSBzaXplIG9mIHRo
ZSBidWZmZXIgaW4gZnJhbWVzIHdoZW4gdGhlIHJlc2FtcGxlciBjYWxscyBBdWRpb1NvdXJjZVBy
b3ZpZGVyOjpwcm92aWRlSW5wdXQoKQorICAgICAgICB0byBnZXQgaW5wdXQgZGF0YS4gVGhpcyBp
cyBuZWNlc3NhcnkgYmVjYXVzZSBvdXIgV2ViQXVkaW8gaW1wbGVtZW50YXRpb24gdXNlcyBhIHN0
YXRpYworICAgICAgICBidWZmZXIgc2l6ZSBvZiAxMjggZnJhbWVzLiBUaGlzIGlzIHNpbWlsYXIg
dG8gd2hhdCB3YXMgZG9uZSBpbiBDaHJvbWl1bSBpbjoKKyAgICAgICAgLSBodHRwczovL2NvZGVy
ZXZpZXcuY2hyb21pdW0ub3JnLzE0MTg5MDM1CisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9E
ZXN0aW5hdGlvbkNvY29hOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2EpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpyZW5kZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpwcm92aWRlSW5wdXQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5oOgorICAg
ICAgICAtIEFkb3B0IFB1c2hQdWxsRklGTyB0byByZXNvbHZlIHRoZSBidWZmZXIgc2l6ZSBtaXNt
YXRjaCBiZXR3ZWVuIHRoZSBXZWJBdWRpbyBlbmdpbmUgYW5kCisgICAgICAgICAgdGhlIGNhbGxi
YWNrIGZ1bmN0aW9uIGZyb20gdGhlIGFjdHVhbCBhdWRpbyBkZXZpY2UsIHNpbWlsYXJseSB0byB3
aGF0IHdhcyBkb25lIGluIENocm9taXVtLgorICAgICAgICAtIFdoZW4gdGhlIGNvbnRleHQncyBz
YW1wbGUgcmF0ZSBkaWZmZXJzIGZyb20gdGhlIGhhcmR3YXJlIHNhbXBsZSByYXRlLCBpbnN0YW50
aWF0ZSBhCisgICAgICAgICAgTXVsdGlDaGFubmVsUmVzYW1wbGVyIGFuZCB1c2UgaW4gaW4gcmVu
ZGVyKCkgdG8gZG8gdGhlIHJlc2FtcGxpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9p
b3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3Rp
bmF0aW9uQ29jb2E6OmNvbmZpZ3VyZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1
ZGlvRGVzdGluYXRpb25NYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlv
bkNvY29hOjpjb25maWd1cmUpOgorICAgICAgICBEcm9wIHNhbXBsZVJhdGUgcGFyYW1ldGVyIGFz
IGl0IGlzIG5vIGxvbmdlciBuZWVkZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0F1ZGlvRGVz
dGluYXRpb25Db2NvYTo6dGljayk6CisKIDIwMjAtMDktMTEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBTZXJpYWxpemF0aW9uIHNob3VsZCBoYXZlIGV4Y2Vw
dGlvbiBjaGVja3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCBiMTU5ZTMyZjEx
YmE3OTRmMWZlMTA3NThkOTYwMGVlNmQwODk0MjhlLi40MjNkY2EzMGVkYjQ0MDQwYzE0ZTY5MzE4
NDFkMGYyM2EwOGVjZGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCkBAIC04Miwx
MCArODIsNyBAQCB2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6dW5pbml0aWFsaXpl
KCkKIAogdm9pZCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZURlc3RpbmF0aW9u
KCkKIHsKLSAgICBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUgPSBBdWRpb0Rlc3RpbmF0aW9uOjpo
YXJkd2FyZVNhbXBsZVJhdGUoKTsKLSAgICBMT0coV2ViQXVkaW8sICI+Pj4+IGhhcmR3YXJlU2Ft
cGxlUmF0ZSA9ICVmXG4iLCBoYXJkd2FyZVNhbXBsZVJhdGUpOwotCi0gICAgbV9kZXN0aW5hdGlv
biA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5tZWRpYVN0cmF0ZWd5KCkuY3JlYXRlQXVkaW9EZXN0
aW5hdGlvbigqdGhpcywgbV9pbnB1dERldmljZUlkLCBtX251bWJlck9mSW5wdXRDaGFubmVscywg
Y2hhbm5lbENvdW50KCksIGhhcmR3YXJlU2FtcGxlUmF0ZSk7CisgICAgbV9kZXN0aW5hdGlvbiA9
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5tZWRpYVN0cmF0ZWd5KCkuY3JlYXRlQXVkaW9EZXN0aW5h
dGlvbigqdGhpcywgbV9pbnB1dERldmljZUlkLCBtX251bWJlck9mSW5wdXRDaGFubmVscywgY2hh
bm5lbENvdW50KCksIG1fc2FtcGxlUmF0ZSk7CiB9CiAKIHZvaWQgRGVmYXVsdEF1ZGlvRGVzdGlu
YXRpb25Ob2RlOjplbmFibGVJbnB1dChjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CmluZGV4IDA4NzIxNjA2NjIwNmZlY2UwMWEwMGVlNWI0MzY1NDIyOWIyYWE5ZTQuLjMw
MjkxYjEyZTE3OGYzZDljMzE3MzI5NzkyZjI4Nzk4ZDdkNjc2YWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBA
IC0xNzg4LDkgKzE3ODgsNyBAQCBwbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rpb24uY3Bw
CiBwbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHAKIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5l
bC5jcHAKIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvRFNQS2VybmVsUHJvY2Vzc29yLmNwcAotcGxhdGZv
cm0vYXVkaW8vQXVkaW9GSUZPLmNwcAogcGxhdGZvcm0vYXVkaW8vQXVkaW9IYXJkd2FyZUxpc3Rl
bmVyLmNwcAotcGxhdGZvcm0vYXVkaW8vQXVkaW9QdWxsRklGTy5jcHAKIHBsYXRmb3JtL2F1ZGlv
L0F1ZGlvUmVzYW1wbGVyLmNwcAogcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXJLZXJuZWwu
Y3BwCiBwbGF0Zm9ybS9hdWRpby9BdWRpb1V0aWxpdGllcy5jcHAKQEAgLTE4MTQsNiArMTgxMiw3
IEBAIHBsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHAKIHBsYXRmb3JtL2F1
ZGlvL1Bhbm5lci5jcHAKIHBsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcAog
cGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAorcGxhdGZvcm0v
YXVkaW8vUHVzaFB1bGxGSUZPLmNwcAogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNwcAogcGxhdGZv
cm0vYXVkaW8vUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyLmNwcAogcGxhdGZvcm0vYXVkaW8vUmV2
ZXJiQ29udm9sdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDQ2MzdjZTQ4MmVkNDFjYzgyZTExNjQ3ZDZjY2NiNTA1ODZk
MGVlOTguLmJmMTdkNGY5MTVhODE2NzFiZjUxZGJkMGU4YTMxM2RlOTg1ZGZlMWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI1
MjYsNiArMjUyNiw3IEBACiAJCTgzQzU3OTVEMURBNUMzMDEwMDZGQUNBOCAvKiBTY3JvbGxUb09w
dGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgz
NTBDM0U3MURBNTlCNjIwMDM1NjQ0NiAvKiBTY3JvbGxUb09wdGlvbnMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4M0QzNUFFQzFDNzE4N0ZBMDBG
NzBENUEgLyogWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNEMzVBRUExQzcxODdFRDAwRjcwRDVBIC8qIFhN
TEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQuaCAqLzsgfTsKIAkJODNEMzVBRjIxQzcxOEQ5MDAwRjcw
RDVBIC8qIEpTWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNEMzVBRjAxQzcxOEQ4NDAwRjcwRDVBIC8qIEpT
WE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5oICovOyB9OworCQk4M0Q1MTFGNjI1MEMxQ0JGMDAy
RURDNTEgLyogUHVzaFB1bGxGSUZPLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4M0Q1MTFGNTI1MEMxQ0E4MDAyRURDNTEgLyogUHVzaFB1bGxGSUZPLmgg
Ki87IH07CiAJCTgzREI5RTBGMjREQTE5NDkwMDM3QjQ2OCAvKiBCaXF1YWRGaWx0ZXJUeXBlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0RCOUUwQzI0
REExOEI1MDAzN0I0NjggLyogQmlxdWFkRmlsdGVyVHlwZS5oICovOyB9OwogCQk4M0RCOUUxMDI0
REExOTU3MDAzN0I0NjggLyogQmlxdWFkRmlsdGVyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNEQjlFMEUyNERBMThCNjAwMzdCNDY4IC8q
IEJpcXVhZEZpbHRlck9wdGlvbnMuaCAqLzsgfTsKIAkJODNFMzU5QTIxQkIxMDMxRDAwMkNFQjk4
IC8qIEpTSFRNTFRpbWVFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4M0UzNTlBMDFCQjEwMzFEMDAyQ0VCOTggLyogSlNIVE1MVGltZUVsZW1l
bnQuaCAqLzsgfTsKQEAgLTEwNzA3LDYgKzEwNzA4LDggQEAKIAkJODNEMzVBRUIxQzcxODdFRDAw
RjcwRDVBIC8qIFhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4M0QzNUFFRjFDNzE4RDg0MDBGNzBENUEgLyogSlNYTUxIdHRwUmVxdWVzdEV2
ZW50VGFyZ2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTWE1M
SHR0cFJlcXVlc3RFdmVudFRhcmdldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTgzRDM1QUYwMUM3MThEODQwMEY3MEQ1QSAvKiBKU1hNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNYTUxIdHRwUmVxdWVzdEV2ZW50
VGFyZ2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzRDUxMUYzMjUwQzFDQTgw
MDJFREM1MSAvKiBQdXNoUHVsbEZJRk8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUHVzaFB1bGxGSUZPLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODNENTExRjUyNTBDMUNBODAwMkVEQzUxIC8qIFB1c2hQdWxsRklGTy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQdXNoUHVsbEZJRk8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODNEQjlFMEEyNERBMThCNDAwMzdCNDY4IC8qIEJpcXVhZEZpbHRlclR5cGUuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IEJpcXVhZEZpbHRlclR5cGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4M0RCOUUwQzI0REExOEI1MDAzN0I0NjggLyogQmlxdWFkRmlsdGVyVHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBCaXF1YWRGaWx0ZXJUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTgzREI5RTBEMjREQTE4QjUwMDM3QjQ2OCAvKiBCaXF1YWRGaWx0ZXJPcHRpb25zLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBCaXF1YWRGaWx0ZXJPcHRpb25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTMwMDMzLDYgKzMwMDM2LDggQEAKIAkJCQkwNzBFMDkxODE4NzVFRDkzMDAzQTFEM0MgLyogUGxh
dGZvcm1NZWRpYVNlc3Npb24uaCAqLywKIAkJCQlDREFFOEMwNzE3NDZCOTU3MDA1MzJENzggLyog
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCAqLywKIAkJCQlDREFFOEMwODE3NDZCOTU3
MDA1MzJENzggLyogUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmggKi8sCisJCQkJODNENTEx
RjMyNTBDMUNBODAwMkVEQzUxIC8qIFB1c2hQdWxsRklGTy5jcHAgKi8sCisJCQkJODNENTExRjUy
NTBDMUNBODAwMkVEQzUxIC8qIFB1c2hQdWxsRklGTy5oICovLAogCQkJCUZEMzE2MDZFMTJCMDI2
RjcwMEMxQTM1OSAvKiBSZXZlcmIuY3BwICovLAogCQkJCUZEMzE2MDZGMTJCMDI2RjcwMEMxQTM1
OSAvKiBSZXZlcmIuaCAqLywKIAkJCQlGRDMxNjA3MDEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJi
QWNjdW11bGF0aW9uQnVmZmVyLmNwcCAqLywKQEAgLTMzMjY1LDYgKzMzMjcwLDcgQEAKIAkJCQk1
NzMwM0JFQjIwMDk3RjQwMDAzNTU5NjUgLyogUHVibGljS2V5Q3JlZGVudGlhbFR5cGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTAwODFGRjAwMTZCMEEyRDMwMDhBQUE3QSAvKiBQdWJsaWNTdWZmaXgu
aCBpbiBIZWFkZXJzICovLAogCQkJCTEwRkIwODRCMTRFMTVDN0UwMEEzREI5OCAvKiBQdWJsaWNV
UkxNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk4M0Q1MTFGNjI1MEMxQ0JGMDAyRURDNTEg
LyogUHVzaFB1bGxGSUZPLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NTBBMEJDQTA4NUY2MDM5MDA3
MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNDMUY1OTQxRURG
NjlEMzAwNDEwRDI3IC8qIFF1YWxpZmllZE5hbWVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTE1RTMxRjQxRTBDQjBCNTAwNEIzNzFDIC8qIFF1aWNrTG9vay5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9GSUZPLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMGIzYWE0OTlmNjk4YmI0NDM3ZGJiOTZkZDcyMTU1MGJhMmNjNWZl
Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
MTQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1l
IG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0g
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShXRUJfQVVESU8pCi0KLSNpbmNs
dWRlICJBdWRpb0ZJRk8uaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1BdWRpb0ZJRk86OkF1
ZGlvRklGTyh1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgZmlmb0xlbmd0aCkKLSAg
ICA6IG1fZmlmb0F1ZGlvQnVzKEF1ZGlvQnVzOjpjcmVhdGUobnVtYmVyT2ZDaGFubmVscywgZmlm
b0xlbmd0aCkpCi0gICAgLCBtX2ZpZm9MZW5ndGgoZmlmb0xlbmd0aCkKLSAgICAsIG1fZnJhbWVz
SW5GaWZvKDApCi0gICAgLCBtX3JlYWRJbmRleCgwKQotICAgICwgbV93cml0ZUluZGV4KDApCi17
Ci19Ci0KLXZvaWQgQXVkaW9GSUZPOjpjb25zdW1lKEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwgc2l6
ZV90IGZyYW1lc1RvQ29uc3VtZSkKLXsKLSAgICBib29sIGlzR29vZCA9IGRlc3RpbmF0aW9uICYm
IChmcmFtZXNUb0NvbnN1bWUgPD0gbV9maWZvTGVuZ3RoKSAmJiAoZnJhbWVzVG9Db25zdW1lIDw9
IG1fZnJhbWVzSW5GaWZvKSAmJiAoZGVzdGluYXRpb24tPmxlbmd0aCgpID49IGZyYW1lc1RvQ29u
c3VtZSk7Ci0gICAgQVNTRVJUKGlzR29vZCk7Ci0gICAgaWYgKCFpc0dvb2QpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIC8vIENvcHkgdGhlIHJlcXVlc3RlZCBudW1iZXIgb2Ygc2FtcGxlcyB0byB0
aGUgZGVzdGluYXRpb24uCi0KLSAgICBzaXplX3QgcGFydDFMZW5ndGg7Ci0gICAgc2l6ZV90IHBh
cnQyTGVuZ3RoOwotICAgIGZpbmRXcmFwTGVuZ3RocyhtX3JlYWRJbmRleCwgZnJhbWVzVG9Db25z
dW1lLCBwYXJ0MUxlbmd0aCwgcGFydDJMZW5ndGgpOwotCi0gICAgc2l6ZV90IG51bWJlck9mQ2hh
bm5lbHMgPSBtX2ZpZm9BdWRpb0J1cy0+bnVtYmVyT2ZDaGFubmVscygpOwotCi0gICAgZm9yIChz
aXplX3QgY2hhbm5lbEluZGV4ID0gMDsgY2hhbm5lbEluZGV4IDwgbnVtYmVyT2ZDaGFubmVsczsg
KytjaGFubmVsSW5kZXgpIHsKLSAgICAgICAgZmxvYXQqIGRlc3RpbmF0aW9uRGF0YSA9IGRlc3Rp
bmF0aW9uLT5jaGFubmVsKGNoYW5uZWxJbmRleCktPm11dGFibGVEYXRhKCk7Ci0gICAgICAgIGNv
bnN0IGZsb2F0KiBzb3VyY2VEYXRhID0gbV9maWZvQXVkaW9CdXMtPmNoYW5uZWwoY2hhbm5lbElu
ZGV4KS0+ZGF0YSgpOwotCi0gICAgICAgIGJvb2wgaXNDb3B5R29vZCA9ICgobV9yZWFkSW5kZXgg
PCBtX2ZpZm9MZW5ndGgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAobV9yZWFkSW5k
ZXggKyBwYXJ0MUxlbmd0aCkgPD0gbV9maWZvTGVuZ3RoCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAmJiAocGFydDFMZW5ndGggPD0gZGVzdGluYXRpb24tPmxlbmd0aCgpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJiYgKHBhcnQxTGVuZ3RoICsgcGFydDJMZW5ndGgpIDw9IGRlc3Rp
bmF0aW9uLT5sZW5ndGgoKSk7Ci0gICAgICAgIEFTU0VSVChpc0NvcHlHb29kKTsKLSAgICAgICAg
aWYgKCFpc0NvcHlHb29kKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1lbWNweShk
ZXN0aW5hdGlvbkRhdGEsIHNvdXJjZURhdGEgKyBtX3JlYWRJbmRleCwgcGFydDFMZW5ndGggKiBz
aXplb2YoKnNvdXJjZURhdGEpKTsKLSAgICAgICAgLy8gSGFuZGxlIHdyYXAgYXJvdW5kIG9mIHRo
ZSBGSUZPLCBpZiBuZWVkZWQuCi0gICAgICAgIGlmIChwYXJ0Mkxlbmd0aCkKLSAgICAgICAgICAg
IG1lbWNweShkZXN0aW5hdGlvbkRhdGEgKyBwYXJ0MUxlbmd0aCwgc291cmNlRGF0YSwgcGFydDJM
ZW5ndGggKiBzaXplb2YoKnNvdXJjZURhdGEpKTsKLSAgICB9Ci0gICAgbV9yZWFkSW5kZXggPSB1
cGRhdGVJbmRleChtX3JlYWRJbmRleCwgZnJhbWVzVG9Db25zdW1lKTsKLSAgICBBU1NFUlQobV9m
cmFtZXNJbkZpZm8gPj0gZnJhbWVzVG9Db25zdW1lKTsKLSAgICBtX2ZyYW1lc0luRmlmbyAtPSBm
cmFtZXNUb0NvbnN1bWU7Ci19Ci0KLXZvaWQgQXVkaW9GSUZPOjpwdXNoKGNvbnN0IEF1ZGlvQnVz
KiBzb3VyY2VCdXMpCi17Ci0gICAgLy8gQ29weSB0aGUgc291cmNlQnVzIGludG8gdGhlIEZJRk8g
YnVmZmVyLgotCi0gICAgYm9vbCBpc0dvb2QgPSBzb3VyY2VCdXMgJiYgKG1fZnJhbWVzSW5GaWZv
ICsgc291cmNlQnVzLT5sZW5ndGgoKSA8PSBtX2ZpZm9MZW5ndGgpOwotICAgIGlmICghaXNHb29k
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBzaXplX3Qgc291cmNlTGVuZ3RoID0gc291cmNlQnVz
LT5sZW5ndGgoKTsKLSAgICBzaXplX3QgcGFydDFMZW5ndGg7Ci0gICAgc2l6ZV90IHBhcnQyTGVu
Z3RoOwotICAgIGZpbmRXcmFwTGVuZ3RocyhtX3dyaXRlSW5kZXgsIHNvdXJjZUxlbmd0aCwgcGFy
dDFMZW5ndGgsIHBhcnQyTGVuZ3RoKTsKLQotICAgIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzID0g
bV9maWZvQXVkaW9CdXMtPm51bWJlck9mQ2hhbm5lbHMoKTsKLQotICAgIGZvciAoc2l6ZV90IGNo
YW5uZWxJbmRleCA9IDA7IGNoYW5uZWxJbmRleCA8IG51bWJlck9mQ2hhbm5lbHM7ICsrY2hhbm5l
bEluZGV4KSB7Ci0gICAgICAgIGZsb2F0KiBkZXN0aW5hdGlvbiA9IG1fZmlmb0F1ZGlvQnVzLT5j
aGFubmVsKGNoYW5uZWxJbmRleCktPm11dGFibGVEYXRhKCk7Ci0gICAgICAgIGNvbnN0IGZsb2F0
KiBzb3VyY2UgPSBzb3VyY2VCdXMtPmNoYW5uZWwoY2hhbm5lbEluZGV4KS0+ZGF0YSgpOwotCi0g
ICAgICAgIGJvb2wgaXNDb3B5R29vZCA9ICgobV93cml0ZUluZGV4IDwgbV9maWZvTGVuZ3RoKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKG1fd3JpdGVJbmRleCArIHBhcnQxTGVuZ3Ro
KSA8PSBtX2ZpZm9MZW5ndGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHBhcnQyTGVu
Z3RoIDwgbV9maWZvTGVuZ3RoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBwYXJ0MUxl
bmd0aCArIHBhcnQyTGVuZ3RoIDw9IHNvdXJjZUxlbmd0aCk7Ci0gICAgICAgIEFTU0VSVChpc0Nv
cHlHb29kKTsKLSAgICAgICAgaWYgKCFpc0NvcHlHb29kKQotICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgIG1lbWNweShkZXN0aW5hdGlvbiArIG1fd3JpdGVJbmRleCwgc291cmNlLCBwYXJ0
MUxlbmd0aCAqIHNpemVvZigqZGVzdGluYXRpb24pKTsKLQotICAgICAgICAvLyBIYW5kbGUgd3Jh
cCBhcm91bmQgb2YgdGhlIEZJRk8sIGlmIG5lZWRlZC4KLSAgICAgICAgaWYgKHBhcnQyTGVuZ3Ro
KQotICAgICAgICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uLCBzb3VyY2UgKyBwYXJ0MUxlbmd0aCwg
cGFydDJMZW5ndGggKiBzaXplb2YoKmRlc3RpbmF0aW9uKSk7Ci0gICAgfQotICAgICAgICAKLSAg
ICBtX2ZyYW1lc0luRmlmbyArPSBzb3VyY2VMZW5ndGg7Ci0gICAgQVNTRVJUKG1fZnJhbWVzSW5G
aWZvIDw9IG1fZmlmb0xlbmd0aCk7Ci0gICAgbV93cml0ZUluZGV4ID0gdXBkYXRlSW5kZXgobV93
cml0ZUluZGV4LCBzb3VyY2VMZW5ndGgpOwotfQotCi12b2lkIEF1ZGlvRklGTzo6ZmluZFdyYXBM
ZW5ndGhzKHNpemVfdCBpbmRleCwgc2l6ZV90IHNpemUsIHNpemVfdCYgcGFydDFMZW5ndGgsIHNp
emVfdCYgcGFydDJMZW5ndGgpCi17Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJ
T04oaW5kZXggPCBtX2ZpZm9MZW5ndGggJiYgc2l6ZSA8PSBtX2ZpZm9MZW5ndGgpOwotICAgIGlm
IChpbmRleCA8IG1fZmlmb0xlbmd0aCAmJiBzaXplIDw9IG1fZmlmb0xlbmd0aCkgewotICAgICAg
ICBpZiAoaW5kZXggKyBzaXplID4gbV9maWZvTGVuZ3RoKSB7Ci0gICAgICAgICAgICAvLyBOZWVk
IHRvIHdyYXAuIEZpZ3VyZSBvdXQgdGhlIGxlbmd0aCBvZiBlYWNoIHBpZWNlLgotICAgICAgICAg
ICAgcGFydDFMZW5ndGggPSBtX2ZpZm9MZW5ndGggLSBpbmRleDsKLSAgICAgICAgICAgIHBhcnQy
TGVuZ3RoID0gc2l6ZSAtIHBhcnQxTGVuZ3RoOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgLy8gTm8gd3JhcCBuZWVkZWQuCi0gICAgICAgICAgICBwYXJ0MUxlbmd0aCA9IHNpemU7Ci0g
ICAgICAgICAgICBwYXJ0Mkxlbmd0aCA9IDA7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAg
ICAgICAvLyBJbnZhbGlkIHZhbHVlcyBmb3IgaW5kZXggb3Igc2l6ZS4gU2V0IHRoZSBwYXJ0IGxl
bmd0aHMgdG8gemVybyBzbyBub3RoaW5nIGlzIGNvcGllZC4KLSAgICAgICAgcGFydDFMZW5ndGgg
PSAwOwotICAgICAgICBwYXJ0Mkxlbmd0aCA9IDA7Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9GSUZPLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MGY0MzhkZDdkMGZhNTlmYjY0NGQ0ZGY1NzJmNTU5ZmQ2NjMwOGJkMy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb0ZJRk8uaAorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgQXVkaW9GSUZP
X2gKLSNkZWZpbmUgQXVkaW9GSUZPX2gKLQotI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQXVkaW9GSUZPIGZpbmFsIHsKLSAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICAvLyBDcmVhdGUgYSBGSUZPIGxhcmdlIGVub3Vn
aCB0byBob2xkIHxmaWZvTGVuZ3RofCBmcmFtZXMgb2YgZGF0YSBvZiB8bnVtYmVyT2ZDaGFubmVs
c3wgY2hhbm5lbHMuCi0gICAgQXVkaW9GSUZPKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNp
emVfdCBmaWZvTGVuZ3RoKTsKLQotICAgIC8vIFB1c2ggdGhlIGRhdGEgZnJvbSB0aGUgYnVzIGlu
dG8gdGhlIEZJRk8uCi0gICAgdm9pZCBwdXNoKGNvbnN0IEF1ZGlvQnVzKik7Ci0KLSAgICAvLyBD
b25zdW1lIHxmcmFtZXNUb0NvbnN1bWV8IGZyYW1lcyBvZiBkYXRhIGZyb20gdGhlIEZJRk8gYW5k
IHB1dCB0aGVtIGluIHxkZXN0aW5hdGlvbnwuIFRoZQotICAgIC8vIGNvcnJlc3BvbmRpbmcgZnJh
bWVzIGFyZSByZW1vdmVkIGZyb20gdGhlIEZJRk8uCi0gICAgdm9pZCBjb25zdW1lKEF1ZGlvQnVz
KiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1RvQ29uc3VtZSk7Ci0KLSAgICAvLyBOdW1iZXIg
b2YgZnJhbWVzIG9mIGRhdGEgdGhhdCBhcmUgY3VycmVudGx5IGluIHRoZSBGSUZPLgotICAgIHNp
emVfdCBmcmFtZXNJbkZpZm8oKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lc0luRmlmbzsgfQotCi1w
cml2YXRlOgotICAgIC8vIFVwZGF0ZSB0aGUgRklGTyBpbmRleCBieSB0aGUgc3RlcCwgd2l0aCBh
cHByb3ByaWF0ZSB3cmFwcGluZyBhcm91bmQgdGhlIGVuZHBvaW50LgotICAgIGludCB1cGRhdGVJ
bmRleChpbnQgaW5kZXgsIGludCBzdGVwKSB7IHJldHVybiAoaW5kZXggKyBzdGVwKSAlIG1fZmlm
b0xlbmd0aDsgfQotCi0gICAgdm9pZCBmaW5kV3JhcExlbmd0aHMoc2l6ZV90IGluZGV4LCBzaXpl
X3QgcHJvdmlkZXJTaXplLCBzaXplX3QmIHBhcnQxTGVuZ3RoLCBzaXplX3QmIHBhcnQyTGVuZ3Ro
KTsKLSAgICAKLSAgICAvLyBUaGUgRklGTyBpdHNlbGYuIEluIHJlYWxpdHksIHRoZSBGSUZPIGlz
IGEgY2lyY3VsYXIgYnVmZmVyLgotICAgIFJlZlB0cjxBdWRpb0J1cz4gbV9maWZvQXVkaW9CdXM7
Ci0KLSAgICAvLyBUaGUgdG90YWwgYXZhaWxhYmxlIHNwYWNlIGluIHRoZSBGSUZPLgotICAgIHNp
emVfdCBtX2ZpZm9MZW5ndGg7Ci0KLSAgICAvLyBUaGUgbnVtYmVyIG9mIGFjdHVhbCBlbGVtZW50
cyBpbiB0aGUgRklGTwotICAgIHNpemVfdCBtX2ZyYW1lc0luRmlmbzsKLQotICAgIC8vIFdoZXJl
IHRvIHN0YXJ0IHJlYWRpbmcgZnJvbSB0aGUgRklGTy4KLSAgICBzaXplX3QgbV9yZWFkSW5kZXg7
Ci0KLSAgICAvLyBXaGVyZSB0byBzdGFydCB3cml0aW5nIHRvIHRoZSBGSUZPLgotICAgIHNpemVf
dCBtX3dyaXRlSW5kZXg7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBBdWRpb0ZJRk8uaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9QdWxsRklGTy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1B1
bGxGSUZPLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmIxYTYyMjI2YjlmODE3
MmI3ZmM2MGRjMjIwMjA0NjA1OWIzNTg3YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxG
SUZPLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0
aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lm
IEVOQUJMRShXRUJfQVVESU8pCi0KLSNpbmNsdWRlICJBdWRpb1B1bGxGSUZPLmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotQXVkaW9QdWxsRklGTzo6QXVkaW9QdWxsRklGTyhBdWRpb1NvdXJj
ZVByb3ZpZGVyJiBhdWRpb1Byb3ZpZGVyLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXpl
X3QgZmlmb0xlbmd0aCwgc2l6ZV90IHByb3ZpZGVyU2l6ZSkKLSAgICA6IG1fcHJvdmlkZXIoYXVk
aW9Qcm92aWRlcikKLSAgICAsIG1fZmlmbyhudW1iZXJPZkNoYW5uZWxzLCBmaWZvTGVuZ3RoKQot
ICAgICwgbV9wcm92aWRlclNpemUocHJvdmlkZXJTaXplKQotICAgICwgbV90ZW1wQnVzKEF1ZGlv
QnVzOjpjcmVhdGUobnVtYmVyT2ZDaGFubmVscywgcHJvdmlkZXJTaXplKSkKLXsKLX0KLQotdm9p
ZCBBdWRpb1B1bGxGSUZPOjpjb25zdW1lKEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZy
YW1lc1RvQ29uc3VtZSkKLXsKLSAgICBpZiAoIWRlc3RpbmF0aW9uKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBpZiAoZnJhbWVzVG9Db25zdW1lID4gbV9maWZvLmZyYW1lc0luRmlmbygpKSB7Ci0g
ICAgICAgIC8vIFdlIGRvbid0IGhhdmUgZW5vdWdoIGRhdGEgaW4gdGhlIEZJRk8gdG8gZnVsZmls
bCB0aGUgcmVxdWVzdC4gQXNrIGZvciBtb3JlIGRhdGEuCi0gICAgICAgIGZpbGxCdWZmZXIoZnJh
bWVzVG9Db25zdW1lIC0gbV9maWZvLmZyYW1lc0luRmlmbygpKTsKLSAgICB9Ci0KLSAgICBtX2Zp
Zm8uY29uc3VtZShkZXN0aW5hdGlvbiwgZnJhbWVzVG9Db25zdW1lKTsKLX0KLQotdm9pZCBBdWRp
b1B1bGxGSUZPOjpmaWxsQnVmZmVyKHNpemVfdCBudW1iZXJPZkZyYW1lcykKLXsKLSAgICAvLyBL
ZWVwIGFza2luZyB0aGUgcHJvdmlkZXIgdG8gZ2l2ZSB1cyBkYXRhIHVudGlsIHdlIGhhdmUgcmVj
ZWl2ZWQgYXQgbGVhc3QgfG51bWJlck9mRnJhbWVzfCBvZgotICAgIC8vIGRhdGEuIFN0dWZmIHRo
ZSBkYXRhIGludG8gdGhlIEZJRk8uCi0gICAgc2l6ZV90IGZyYW1lc1Byb3ZpZGVkID0gMDsKLQot
ICAgIHdoaWxlIChmcmFtZXNQcm92aWRlZCA8IG51bWJlck9mRnJhbWVzKSB7Ci0gICAgICAgIG1f
cHJvdmlkZXIucHJvdmlkZUlucHV0KG1fdGVtcEJ1cy5nZXQoKSwgbV9wcm92aWRlclNpemUpOwot
Ci0gICAgICAgIG1fZmlmby5wdXNoKG1fdGVtcEJ1cy5nZXQoKSk7Ci0KLSAgICAgICAgZnJhbWVz
UHJvdmlkZWQgKz0gbV9wcm92aWRlclNpemU7Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9QdWxsRklGTy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9QdWxsRklGTy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBkNzQ4ZmE0MTM4NzM3OWRiMzk1YmVhZTY1Zjg4MmJhMjU4ZTlmYzI2Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0F1ZGlvUHVsbEZJRk8uaAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIElu
Yy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYg
QXVkaW9QdWxsRklGT19oCi0jZGVmaW5lIEF1ZGlvUHVsbEZJRk9faAotCi0jaW5jbHVkZSAiQXVk
aW9CdXMuaCIKLSNpbmNsdWRlICJBdWRpb0ZJRk8uaCIKLSNpbmNsdWRlICJBdWRpb1NvdXJjZVBy
b3ZpZGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gQSBGSUZPIChGaXJzdCBJbiBG
aXJzdCBPdXQpIGJ1ZmZlciB0byBoYW5kbGUgbWlzbWF0Y2hlcyBpbiBidWZmZXIgc2l6ZXMgYmV0
d2VlbiBhIHByb3ZpZGVyIGFuZAotLy8gcmVjZWl2ZXIuIFRoZSByZWNlaXZlciB3aWxsICJwdWxs
IiBkYXRhIGZyb20gdGhpcyBGSUZPLiBJZiBkYXRhIGlzIGFscmVhZHkgYXZhaWxhYmxlIGluIHRo
ZQotLy8gRklGTywgaXQgaXMgcHJvdmlkZWQgdG8gdGhlIHJlY2VpdmVyLiBJZiBpbnN1ZmZpY2ll
bnQgZGF0YSBpcyBhdmFpbGFibGUgdG8gc2F0aXNmeSB0aGUgcmVxdWVzdCwKLS8vIHRoZSBGSUZP
IHdpbGwgYXNrIHRoZSBwcm92aWRlciBmb3IgbW9yZSBkYXRhIHdoZW4gbmVjZXNzYXJ5IHRvIGZ1
bGZpbGwgYSByZXF1ZXN0LiBDb250cmFzdCB0aGlzCi0vLyB3aXRoIGEgInB1c2giIEZJRk8sIHdo
ZXJlIHRoZSBzZW5kZXIgcHVzaGVzIGRhdGEgdG8gdGhlIEZJRk8gd2hpY2ggd2lsbCBpdHNlbGYg
cHVzaCB0aGUgZGF0YSB0bwotLy8gdGhlIHJlY2VpdmVyIHdoZW4gdGhlIEZJRk8gaXMgZnVsbC4K
LWNsYXNzIEF1ZGlvUHVsbEZJRk8gZmluYWwgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwotcHVibGljOgotICAgIC8vIENyZWF0ZSBhIEZJRk8gdGhhdCBnZXRzIGRhdGEgZnJvbSB8cHJv
dmlkZXJ8LiBUaGUgRklGTyB3aWxsIGJlIGxhcmdlIGVub3VnaCB0byBob2xkCi0gICAgLy8gfGZp
Zm9MZW5ndGh8IGZyYW1lcyBvZiBkYXRhIG9mIHxudW1iZXJPZkNoYW5uZWxzfCBjaGFubmVscy4g
VGhlIEF1ZGlvU291cmNlUHJvdmlkZXIgd2lsbCBiZQotICAgIC8vIGFza2VkIHRvIHByb2R1Y2Ug
fHByb3ZpZGVyU2l6ZXwgZnJhbWVzIHdoZW4gdGhlIEZJRk8gbmVlZHMgbW9yZSBkYXRhLgotICAg
IEF1ZGlvUHVsbEZJRk8oQXVkaW9Tb3VyY2VQcm92aWRlciYgYXVkaW9Qcm92aWRlciwgdW5zaWdu
ZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IGZpZm9MZW5ndGgsIHNpemVfdCBwcm92aWRlclNp
emUpOwotCi0gICAgLy8gUmVhZCB8ZnJhbWVzVG9Db25zdW1lfCBmcmFtZXMgZnJvbSB0aGUgRklG
TyBpbnRvIHRoZSBkZXN0aW5hdGlvbi4gSWYgdGhlIEZJRk8gZG9lcyBub3QgaGF2ZQotICAgIC8v
IGVub3VnaCBkYXRhLCB3ZSBhc2sgdGhlIHxwcm92aWRlcnwgdG8gZ2V0IG1vcmUgZGF0YSB0byBm
dWxmaWxsIHRoZSByZXF1ZXN0LgotICAgIHZvaWQgY29uc3VtZShBdWRpb0J1cyogZGVzdGluYXRp
b24sIHNpemVfdCBmcmFtZXNUb0NvbnN1bWUpOwotCi1wcml2YXRlOgotICAgIC8vIEZpbGwgdGhl
IEZJRk8gYnVmZmVyIHdpdGggYXQgbGVhc3QgfG51bWJlck9mRnJhbWVzfCBtb3JlIGRhdGEuCi0g
ICAgdm9pZCBmaWxsQnVmZmVyKHNpemVfdCBudW1iZXJPZkZyYW1lcyk7Ci0KLSAgICAvLyBUaGUg
cHJvdmlkZXIgb2YgdGhlIGRhdGEgaW4gb3VyIEZJRk8uCi0gICAgQXVkaW9Tb3VyY2VQcm92aWRl
ciYgbV9wcm92aWRlcjsKLQotICAgIC8vIFRoZSBhY3R1YWwgRklGTwotICAgIEF1ZGlvRklGTyBt
X2ZpZm87Ci0KLSAgICAvLyBOdW1iZXIgb2YgZnJhbWVzIG9mIGRhdGEgdGhhdCB0aGUgcHJvdmlk
ZXIgd2lsbCBwcm9kdWNlIHBlciBjYWxsLgotICAgIHVuc2lnbmVkIGludCBtX3Byb3ZpZGVyU2l6
ZTsKLQotICAgIC8vIFRlbXBvcmFyeSB3b3Jrc3BhY2UgdG8gaG9sZCB0aGUgZGF0YSBmcm9tIHRo
ZSBwcm92aWRlci4KLSAgICBSZWZQdHI8QXVkaW9CdXM+IG1fdGVtcEJ1czsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEF1ZGlvUHVsbEZJRk8uaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5j
cHAKaW5kZXggNWU2MjY4ZDNiYjEzYjVmMjcxZDJlNmE4OTYwMjgwZTc1M2I5ZGE0ZC4uODRlZmFi
MTYzMWIxYTY2Y2Y2NTE5YzFhMmI2M2U5NjljMjZkZWYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuY3BwCkBAIC05
MiwxMyArOTIsMTMgQEAgcHJpdmF0ZToKICAgICBzaXplX3QgbV9mcmFtZXNUb1Byb2Nlc3MgeyAw
IH07IC8vIFVzZWQgdG8gdmVyaWZ5IHRoYXQgYWxsIGNoYW5uZWxzIGFzayBmb3IgdGhlIHNhbWUg
YW1vdW50LgogfTsKIAotTXVsdGlDaGFubmVsUmVzYW1wbGVyOjpNdWx0aUNoYW5uZWxSZXNhbXBs
ZXIoZG91YmxlIHNjYWxlRmFjdG9yLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKQorTXVsdGlD
aGFubmVsUmVzYW1wbGVyOjpNdWx0aUNoYW5uZWxSZXNhbXBsZXIoZG91YmxlIHNjYWxlRmFjdG9y
LCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBPcHRpb25hbDx1bnNpZ25lZD4gcmVxdWVzdEZy
YW1lcykKICAgICA6IG1fbnVtYmVyT2ZDaGFubmVscyhudW1iZXJPZkNoYW5uZWxzKQogICAgICwg
bV9jaGFubmVsUHJvdmlkZXIobWFrZVVuaXF1ZTxDaGFubmVsUHJvdmlkZXI+KG1fbnVtYmVyT2ZD
aGFubmVscykpCiB7CiAgICAgLy8gQ3JlYXRlIGVhY2ggY2hhbm5lbCdzIHJlc2FtcGxlci4KICAg
ICBmb3IgKHVuc2lnbmVkIGNoYW5uZWxJbmRleCA9IDA7IGNoYW5uZWxJbmRleCA8IG51bWJlck9m
Q2hhbm5lbHM7ICsrY2hhbm5lbEluZGV4KQotICAgICAgICBtX2tlcm5lbHMuYXBwZW5kKG1ha2VV
bmlxdWU8U2luY1Jlc2FtcGxlcj4oc2NhbGVGYWN0b3IpKTsKKyAgICAgICAgbV9rZXJuZWxzLmFw
cGVuZChtYWtlVW5pcXVlPFNpbmNSZXNhbXBsZXI+KHNjYWxlRmFjdG9yLCByZXF1ZXN0RnJhbWVz
KSk7CiB9CiAKIE11bHRpQ2hhbm5lbFJlc2FtcGxlcjo6fk11bHRpQ2hhbm5lbFJlc2FtcGxlcigp
ID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011
bHRpQ2hhbm5lbFJlc2FtcGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVs
dGlDaGFubmVsUmVzYW1wbGVyLmgKaW5kZXggYWM4MWJlYzRiZTBiNDBkMjg0MTc2OWFlOGFjYTA3
MTg2OGJhYjBjZi4uNzE2YmM2MDFlODc4ZTNmNzRmNzRlYTM0ZGNiZDFjNzk4YzRkZGNhOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1w
bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVz
YW1wbGVyLmgKQEAgLTQwLDcgKzQwLDggQEAgY2xhc3MgQXVkaW9CdXM7CiBjbGFzcyBNdWx0aUNo
YW5uZWxSZXNhbXBsZXIgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOiAgIAotICAgIGV4cGxpY2l0IE11bHRpQ2hhbm5lbFJlc2FtcGxlcihkb3VibGUgc2NhbGVG
YWN0b3IsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMpOworICAgIC8vIHJlcXVlc3RGcmFtZXMg
Y29uc3Ryb2xzIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgaW4gZnJhbWVzIHdoZW4gQXVkaW9Tb3Vy
Y2VQcm92aWRlcjo6cHJvdmlkZUlucHV0KCkgaXMgY2FsbGVkLgorICAgIGV4cGxpY2l0IE11bHRp
Q2hhbm5lbFJlc2FtcGxlcihkb3VibGUgc2NhbGVGYWN0b3IsIHVuc2lnbmVkIG51bWJlck9mQ2hh
bm5lbHMsIE9wdGlvbmFsPHVuc2lnbmVkPiByZXF1ZXN0RnJhbWVzID0gV1RGOjpudWxsb3B0KTsK
ICAgICB+TXVsdGlDaGFubmVsUmVzYW1wbGVyKCk7CiAKICAgICAvLyBQcm9jZXNzIGdpdmVuIEF1
ZGlvU291cmNlUHJvdmlkZXIgZm9yIHN0cmVhbWluZyBhcHBsaWNhdGlvbnMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QdXNoUHVsbEZJRk8uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUHVzaFB1bGxGSUZPLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjg3
ZThjZmE0ZDNjNDhhNTE1Yjk1ZjhhZDY0ODU2OTFlM2FiOGI2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUHVzaFB1bGxGSUZPLmNwcApAQCAtMCwwICsx
LDEyOSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE3IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlB1c2hQdWxsRklGTy5oIgorCisjaW5jbHVkZSAiQXVkaW9CdXMuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjb25zdCBzaXplX3QgUHVzaFB1bGxGSUZPOjprTWF4RklGT0xlbmd0aCA9IDY1
NTM2OworCitQdXNoUHVsbEZJRk86OlB1c2hQdWxsRklGTyh1bnNpZ25lZCBudW1iZXJPZkNoYW5u
ZWxzLCBzaXplX3QgZmlmb0xlbmd0aCkKKyAgICA6IG1fZmlmb0xlbmd0aChmaWZvTGVuZ3RoKQor
eworICAgIEFTU0VSVChtX2ZpZm9MZW5ndGggPD0ga01heEZJRk9MZW5ndGgpOworICAgIG1fZmlm
b0J1cyA9IEF1ZGlvQnVzOjpjcmVhdGUobnVtYmVyT2ZDaGFubmVscywgbV9maWZvTGVuZ3RoKTsK
K30KKworUHVzaFB1bGxGSUZPOjp+UHVzaFB1bGxGSUZPKCkgPSBkZWZhdWx0OworCisvLyBQdXNo
IHRoZSBkYXRhIGZyb20gfGlucHV0QnVzfCB0byBGSUZPLiBUaGUgc2l6ZSBvZiBwdXNoIGlzIGRl
dGVybWluZWQgYnkKKy8vIHRoZSBsZW5ndGggb2YgfGlucHV0QnVzfC4KK3ZvaWQgUHVzaFB1bGxG
SUZPOjpwdXNoKGNvbnN0IEF1ZGlvQnVzKiBpbnB1dEJ1cykKK3sKKyAgICBBU1NFUlQoaW5wdXRC
dXMpOworICAgIEFTU0VSVChpbnB1dEJ1cy0+bGVuZ3RoKCkgPD0gbV9maWZvTGVuZ3RoKTsKKyAg
ICBBU1NFUlQobV9pbmRleFdyaXRlIDwgbV9maWZvTGVuZ3RoKTsKKworICAgIGNvbnN0IHNpemVf
dCBpbnB1dEJ1c0xlbmd0aCA9IGlucHV0QnVzLT5sZW5ndGgoKTsKKyAgICBjb25zdCBzaXplX3Qg
cmVtYWluZGVyID0gbV9maWZvTGVuZ3RoIC0gbV9pbmRleFdyaXRlOworCisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fZmlmb0J1cy0+bnVtYmVyT2ZDaGFubmVscygpOyArK2kpIHsKKyAg
ICAgICAgZmxvYXQqIGZpZm9CdXNDaGFubmVsID0gbV9maWZvQnVzLT5jaGFubmVsKGkpLT5tdXRh
YmxlRGF0YSgpOworICAgICAgICBjb25zdCBmbG9hdCogaW5wdXRCdXNDaGFubmVsID0gaW5wdXRC
dXMtPmNoYW5uZWwoaSktPmRhdGEoKTsKKyAgICAgICAgaWYgKHJlbWFpbmRlciA+PSBpbnB1dEJ1
c0xlbmd0aCkgeworICAgICAgICAgICAgLy8gVGhlIHJlbWFpbmRlciBpcyBiaWcgZW5vdWdoIGZv
ciB0aGUgaW5wdXQgZGF0YS4KKyAgICAgICAgICAgIG1lbWNweShmaWZvQnVzQ2hhbm5lbCArIG1f
aW5kZXhXcml0ZSwgaW5wdXRCdXNDaGFubmVsLCBpbnB1dEJ1c0xlbmd0aCAqIHNpemVvZigqZmlm
b0J1c0NoYW5uZWwpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFRoZSBpbnB1
dCBkYXRhIG92ZXJmbG93cyB0aGUgcmVtYWluZGVyIHNpemUuIFdyYXAgYXJvdW5kIHRoZSBpbmRl
eC4KKyAgICAgICAgICAgIG1lbWNweShmaWZvQnVzQ2hhbm5lbCArIG1faW5kZXhXcml0ZSwgaW5w
dXRCdXNDaGFubmVsLCByZW1haW5kZXIgKiBzaXplb2YoKmZpZm9CdXNDaGFubmVsKSk7CisgICAg
ICAgICAgICBtZW1jcHkoZmlmb0J1c0NoYW5uZWwsIGlucHV0QnVzQ2hhbm5lbCArIHJlbWFpbmRl
ciwgKGlucHV0QnVzTGVuZ3RoIC0gcmVtYWluZGVyKSAqIHNpemVvZigqZmlmb0J1c0NoYW5uZWwp
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFVwZGF0ZSB0aGUgd3JpdGUgaW5kZXg7IHdy
YXAgaXQgYXJvdW5kIGlmIG5lY2Vzc2FyeS4KKyAgICBtX2luZGV4V3JpdGUgPSAobV9pbmRleFdy
aXRlICsgaW5wdXRCdXNMZW5ndGgpICUgbV9maWZvTGVuZ3RoOworCisgICAgLy8gSW4gY2FzZSBv
ZiBvdmVyZmxvdywgbW92ZSB0aGUgfGluZGV4UmVhZHwgdG8gdGhlIHVwZGF0ZWQgfGluZGV4V3Jp
dGV8IHRvCisgICAgLy8gYXZvaWQgcmVhZGluZyBvdmVyd3JpdHRlbiBmcmFtZXMgYnkgdGhlIG5l
eHQgcHVsbC4KKyAgICBpZiAoaW5wdXRCdXNMZW5ndGggPiBtX2ZpZm9MZW5ndGggLSBtX2ZyYW1l
c0F2YWlsYWJsZSkKKyAgICAgICAgbV9pbmRleFJlYWQgPSBtX2luZGV4V3JpdGU7CisKKyAgICAv
LyBVcGRhdGUgdGhlIG51bWJlciBvZiBmcmFtZXMgYXZhaWxhYmxlIGluIEZJRk8uCisgICAgbV9m
cmFtZXNBdmFpbGFibGUgPSBzdGQ6Om1pbihtX2ZyYW1lc0F2YWlsYWJsZSArIGlucHV0QnVzTGVu
Z3RoLCBtX2ZpZm9MZW5ndGgpOworICAgIEFTU0VSVCgoKG1faW5kZXhSZWFkICsgbV9mcmFtZXNB
dmFpbGFibGUpICUgbV9maWZvTGVuZ3RoKSA9PSBtX2luZGV4V3JpdGUpOworfQorCisvLyBQdWxs
IHRoZSBkYXRhIG91dCBvZiBGSUZPIHRvIHxvdXRwdXRCdXN8LiBJZiByZW1haW5pbmcgZnJhbWUg
aW4gdGhlIEZJRk8KKy8vIGlzIGxlc3MgdGhhbiB0aGUgZnJhbWVzIHRvIHB1bGwsIHByb3ZpZGVz
IHJlbWFpbmluZyBmcmFtZSBwbHVzIHRoZSBzaWxlbmNlLgorc2l6ZV90IFB1c2hQdWxsRklGTzo6
cHVsbChBdWRpb0J1cyogb3V0cHV0QnVzLCBzaXplX3QgZnJhbWVzUmVxdWVzdGVkKQoreworICAg
IEFTU0VSVChvdXRwdXRCdXMpOworICAgIEFTU0VSVChmcmFtZXNSZXF1ZXN0ZWQgPD0gb3V0cHV0
QnVzLT5sZW5ndGgoKSk7CisgICAgQVNTRVJUKGZyYW1lc1JlcXVlc3RlZCA8PSBtX2ZpZm9MZW5n
dGgpOworICAgIEFTU0VSVChtX2luZGV4UmVhZCA8IG1fZmlmb0xlbmd0aCk7CisKKyAgICBjb25z
dCBzaXplX3QgcmVtYWluZGVyID0gbV9maWZvTGVuZ3RoIC0gbV9pbmRleFJlYWQ7CisgICAgY29u
c3Qgc2l6ZV90IGZyYW1lc1RvRmlsbCA9IHN0ZDo6bWluKG1fZnJhbWVzQXZhaWxhYmxlLCBmcmFt
ZXNSZXF1ZXN0ZWQpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZmlmb0J1cy0+
bnVtYmVyT2ZDaGFubmVscygpOyArK2kpIHsKKyAgICAgICAgY29uc3QgZmxvYXQqIGZpZm9CdXND
aGFubmVsID0gbV9maWZvQnVzLT5jaGFubmVsKGkpLT5kYXRhKCk7CisgICAgICAgIGZsb2F0KiBv
dXRwdXRCdXNDaGFubmVsID0gb3V0cHV0QnVzLT5jaGFubmVsKGkpLT5tdXRhYmxlRGF0YSgpOwor
CisgICAgICAgIC8vIEZpbGwgdXAgdGhlIG91dHB1dCBidXMgd2l0aCB0aGUgYXZhaWxhYmxlIGZy
YW1lcyBmaXJzdC4KKyAgICAgICAgaWYgKHJlbWFpbmRlciA+PSBmcmFtZXNUb0ZpbGwpIHsKKyAg
ICAgICAgICAgIC8vIFRoZSByZW1haW5kZXIgaXMgYmlnIGVub3VnaCBmb3IgdGhlIGZyYW1lcyB0
byBwdWxsLgorICAgICAgICAgICAgbWVtY3B5KG91dHB1dEJ1c0NoYW5uZWwsIGZpZm9CdXNDaGFu
bmVsICsgbV9pbmRleFJlYWQsIGZyYW1lc1RvRmlsbCAqIHNpemVvZigqZmlmb0J1c0NoYW5uZWwp
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFRoZSBmcmFtZXMgdG8gcHVsbCBp
cyBiaWdnZXIgdGhhbiB0aGUgcmVtYWluZGVyIHNpemUuCisgICAgICAgICAgICAvLyBXcmFwIGFy
b3VuZCB0aGUgaW5kZXguCisgICAgICAgICAgICBtZW1jcHkob3V0cHV0QnVzQ2hhbm5lbCwgZmlm
b0J1c0NoYW5uZWwgKyBtX2luZGV4UmVhZCwgcmVtYWluZGVyICogc2l6ZW9mKCpmaWZvQnVzQ2hh
bm5lbCkpOworICAgICAgICAgICAgbWVtY3B5KG91dHB1dEJ1c0NoYW5uZWwgKyByZW1haW5kZXIs
IGZpZm9CdXNDaGFubmVsLCAoZnJhbWVzVG9GaWxsIC0gcmVtYWluZGVyKSAqIHNpemVvZigqZmlm
b0J1c0NoYW5uZWwpKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFRoZSBmcmFtZXMgYXZhaWxh
YmxlIHdhcyBub3QgZW5vdWdoIHRvIGZ1bGZpbGwgdGhlIHJlcXVlc3RlZCBmcmFtZXMuIEZpbGwK
KyAgICAgICAgLy8gdGhlIHJlc3Qgb2YgdGhlIGNoYW5uZWwgd2l0aCBzaWxlbmNlLgorICAgICAg
ICBpZiAoZnJhbWVzUmVxdWVzdGVkID4gZnJhbWVzVG9GaWxsKQorICAgICAgICAgICAgbWVtc2V0
KG91dHB1dEJ1c0NoYW5uZWwgKyBmcmFtZXNUb0ZpbGwsIDAsIChmcmFtZXNSZXF1ZXN0ZWQgLSBm
cmFtZXNUb0ZpbGwpICogc2l6ZW9mKCpvdXRwdXRCdXNDaGFubmVsKSk7CisgICAgfQorCisgICAg
Ly8gVXBkYXRlIHRoZSByZWFkIGluZGV4OyB3cmFwIGl0IGFyb3VuZCBpZiBuZWNlc3NhcnkuCisg
ICAgbV9pbmRleFJlYWQgPSAobV9pbmRleFJlYWQgKyBmcmFtZXNUb0ZpbGwpICUgbV9maWZvTGVu
Z3RoOworCisgICAgLy8gSW4gY2FzZSBvZiB1bmRlcmZsb3csIG1vdmUgdGhlIHxpbmRleFdyaXRl
fCB0byB0aGUgdXBkYXRlZCB8aW5kZXhSZWFkfC4KKyAgICBpZiAoZnJhbWVzUmVxdWVzdGVkID4g
ZnJhbWVzVG9GaWxsKQorICAgICAgICBtX2luZGV4V3JpdGUgPSBtX2luZGV4UmVhZDsKKworICAg
IC8vIFVwZGF0ZSB0aGUgbnVtYmVyIG9mIGZyYW1lcyBpbiBGSUZPLgorICAgIG1fZnJhbWVzQXZh
aWxhYmxlIC09IGZyYW1lc1RvRmlsbDsKKyAgICBBU1NFUlQoKChtX2luZGV4UmVhZCArIG1fZnJh
bWVzQXZhaWxhYmxlKSAlIG1fZmlmb0xlbmd0aCkgPT0gbV9pbmRleFdyaXRlKTsKKworICAgIC8v
IHxmcmFtZXNSZXF1ZXN0ZWQgPiBtX2ZyYW1lc0F2YWlsYWJsZXwgbWVhbnMgdGhlIGZyYW1lcyBp
biBGSUZPIGlzIG5vdAorICAgIC8vIGVub3VnaCB0byBmdWxmaWxsIHRoZSByZXF1ZXN0ZWQgZnJh
bWVzIGZyb20gdGhlIGF1ZGlvIGRldmljZS4KKyAgICByZXR1cm4gZnJhbWVzUmVxdWVzdGVkID4g
bV9mcmFtZXNBdmFpbGFibGUgPyBmcmFtZXNSZXF1ZXN0ZWQgLSBtX2ZyYW1lc0F2YWlsYWJsZSA6
IDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1B1c2hQdWxsRklGTy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUHVzaFB1bGxGSUZPLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjlkMTQ1M2VjZTdiZDcyZTczNjYz
OGUzZTUzNDQyMTM5OWRjZGJlNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1B1c2hQdWxsRklGTy5oCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgMjAxNyBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9CdXM7CisKKy8vIFB1c2hQdWxsRklGTyBjbGFzcyBp
cyBhbiBpbnRlcm1lZGlhdGUgYXVkaW8gc2FtcGxlIHN0b3JhZ2UgYmV0d2VlbgorLy8gV2ViS2l0
LVdlYkF1ZGlvIGFuZCB0aGUgcmVuZGVyZXIuIFRoZSByZW5kZXJlcidzIGhhcmR3YXJlIGNhbGxi
YWNrIGJ1ZmZlciBzaXplCisvLyB2YXJpZXMgb24gdGhlIHBsYXRmb3JtLCBidXQgdGhlIFdlYkF1
ZGlvIGFsd2F5cyByZW5kZXJzIDEyOCBmcmFtZXMgKHJlbmRlcgorLy8gcXVhbnR1bSwgUlEpIHRo
dXMgRklGTyBpcyBuZWVkZWQgdG8gaGFuZGxlIHRoZSBnZW5lcmFsIGNhc2UuCitjbGFzcyBQdXNo
UHVsbEZJRk8geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFB1c2hQdWxsRklGTyk7CisKK3B1YmxpYzoKKyAgICAvLyBNYXhpbXVtIEZJRk8g
bGVuZ3RoLiAoNTEyIHJlbmRlciBxdWFudGEpCisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBrTWF4
RklGT0xlbmd0aDsKKworICAgIC8vIHxmaWZvTGVuZ3RofCBjYW5ub3QgZXhjZWVkIHxrTWF4RklG
T0xlbmd0aHwuIE90aGVyd2lzZSBpdCBjcmFzaGVzLgorICAgIFB1c2hQdWxsRklGTyh1bnNpZ25l
ZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgZmlmb0xlbmd0aCk7CisgICAgflB1c2hQdWxsRklG
TygpOworCisgICAgLy8gUHVzaGVzIHRoZSByZW5kZXJlZCBmcmFtZXMgYnkgV2ViQXVkaW8gZW5n
aW5lLgorICAgIC8vICAtIFRoZSB8aW5wdXRCdXN8IGxlbmd0aCBpcyAxMjggZnJhbWVzICgxIHJl
bmRlciBxdWFudHVtKSwgZml4ZWQuCisgICAgLy8gIC0gSW4gY2FzZSBvZiBvdmVyZmxvdyAoRklG
TyBmdWxsIHdoaWxlIHB1c2gpLCB0aGUgZXhpc3RpbmcgZnJhbWVzIGluIEZJRk8KKyAgICAvLyAg
ICB3aWxsIGJlIG92ZXJ3cml0dGVuIGFuZCB8aW5kZXhSZWFkfCB3aWxsIGJlIGZvcmNpYmx5IG1v
dmVkIHRvCisgICAgLy8gICAgfGluZGV4V3JpdGV8IHRvIGF2b2lkIHJlYWRpbmcgb3ZlcndyaXR0
ZW4gZnJhbWVzLgorICAgIHZvaWQgcHVzaChjb25zdCBBdWRpb0J1cyogaW5wdXRCdXMpOworCisg
ICAgLy8gUHVsbHMgfGZyYW1lc1JlcXVlc3RlZHwgYnkgdGhlIGF1ZGlvIGRldmljZSB0aHJlYWQg
YW5kIHJldHVybnMgdGhlIGFjdHVhbAorICAgIC8vIG51bWJlciBvZiBmcmFtZXMgdG8gYmUgcmVu
ZGVyZWQgYnkgdGhlIHNvdXJjZS4gKGkuZS4gV2ViQXVkaW8gZ3JhcGgpCisgICAgc2l6ZV90IHB1
bGwoQXVkaW9CdXMqIG91dHB1dEJ1cywgc2l6ZV90IGZyYW1lc1JlcXVlc3RlZCk7CisKKyAgICBz
aXplX3QgZnJhbWVzQXZhaWxhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZXNBdmFpbGFibGU7
IH0KKyAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9maWZvTGVuZ3RoOyB9Cisg
ICAgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscygpIGNvbnN0IHsgcmV0dXJuIG1fZmlmb0J1cy0+
bnVtYmVyT2ZDaGFubmVscygpOyB9CisgICAgQXVkaW9CdXMqIGJ1cygpIGNvbnN0IHsgcmV0dXJu
IG1fZmlmb0J1cy5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIC8vIFRoZSBzaXplIG9mIHRoZSBG
SUZPLgorICAgIGNvbnN0IHNpemVfdCBtX2ZpZm9MZW5ndGggPSAwOworCisgICAgUmVmUHRyPEF1
ZGlvQnVzPiBtX2ZpZm9CdXM7CisKKyAgICAvLyBUaGUgbnVtYmVyIG9mIGZyYW1lcyBpbiB0aGUg
RklGTyBhY3R1YWxseSBhdmFpbGFibGUgZm9yIHB1bGxpbmcuCisgICAgc2l6ZV90IG1fZnJhbWVz
QXZhaWxhYmxlIHsgMCB9OworCisgICAgc2l6ZV90IG1faW5kZXhSZWFkIHsgMCB9OworICAgIHNp
emVfdCBtX2luZGV4V3JpdGUgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmNwcApp
bmRleCA1MjA1MjdiNTRiYTU3ODZkOGNlYmRmYWI1M2E0NTY4YTkzZGU2ZWQ4Li4yNjUxYzQ4NzA5
NTc0ZDk4MjNjZmRmZTY5ZTg1ZDcwNjgyZWQwMzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmNwcApAQCAtMzksNTEgKzM5LDExMyBAQAogI2lu
Y2x1ZGUgPGVtbWludHJpbi5oPgogI2VuZGlmCiAKLS8vIElucHV0IGJ1ZmZlciBsYXlvdXQsIGRp
dmlkaW5nIHRoZSB0b3RhbCBidWZmZXIgaW50byByZWdpb25zIChyMCAtIHI1KToKKy8vIEluaXRp
YWwgaW5wdXQgYnVmZmVyIGxheW91dCwgZGl2aWRpbmcgaW50byByZWdpb25zIHIwIHRvIHI0IChu
b3RlOiByMCwgcjMKKy8vIGFuZCByNCB3aWxsIG1vdmUgYWZ0ZXIgdGhlIGZpcnN0IGxvYWQpOgog
Ly8KIC8vIHwtLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLXwKIC8vCi0v
LyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja1NpemUg
KyBrZXJuZWxTaXplIC8gMiAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLy8gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9yZXF1ZXN0RnJhbWVzCiAvLyAg
ICAgICAgICAgICAgICAgICA8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+Ci0vLyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcjAKKy8vICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIwIChkdXJpbmcgZmlyc3QgbG9hZCkKIC8v
CiAvLyAgIGtlcm5lbFNpemUgLyAyICAga2VybmVsU2l6ZSAvIDIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBrZXJuZWxTaXplIC8gMiAgICAga2VybmVsU2l6ZSAvIDIgCiAvLyA8LS0t
LS0tLS0tLS0tLS0tPiA8LS0tLS0tLS0tLS0tLS0tPiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDwtLS0tLS0tLS0tLS0tLS0+IDwtLS0tLS0tLS0tLS0tLS0+CiAvLyAgICAgICAgIHIxICAg
ICAgICAgICAgICAgIHIyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcjMgICAgICAgICAgICAgICAgcjQKIC8vIAotLy8gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYmxvY2tTaXplICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ci0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8LS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+Ci0vLyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcjUKKy8vICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX2Jsb2NrU2l6ZSA9PSByNCAtIHIyCisvLyAgICAgICAg
ICAgICAgICAgICA8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPgorLy8K
Ky8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3Jl
cXVlc3RGcmFtZXMKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC0tLS0t
LS0tLS0tLS0tLS0tLSAuLi4gLS0tLS0tLS0tLS0tLS0tLS0+CisvLyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcjAgKGR1cmluZyBzZWNvbmQgbG9hZCkKKy8v
CisvLyBPbiB0aGUgc2Vjb25kIHJlcXVlc3QgcjAgc2xpZGVzIHRvIHRoZSByaWdodCBieSBrZXJu
ZWxTaXplIC8gMiBhbmQgcjMsIHI0CisvLyBhbmQgbV9ibG9ja1NpemUgYXJlIHJlaW5pdGlhbGl6
ZWQgdmlhIHN0ZXAgKDMpIGluIHRoZSBhbGdvcml0aG0gYmVsb3cuCisvLworLy8gVGhlc2UgbmV3
IHJlZ2lvbnMgcmVtYWluIGNvbnN0YW50IHVudGlsIGEgRmx1c2goKSBvY2N1cnMuIFdoaWxlIGNv
bXBsaWNhdGVkLAorLy8gdGhpcyBhbGxvd3MgdXMgdG8gcmVkdWNlIGppdHRlciBieSBhbHdheXMg
cmVxdWVzdGluZyB0aGUgc2FtZSBhbW91bnQgZnJvbSB0aGUKKy8vIHByb3ZpZGVkIGNhbGxiYWNr
LgogCiAvLyBUaGUgQWxnb3JpdGhtOgogLy8KLS8vIDEpIENvbnN1bWUgaW5wdXQgZnJhbWVzIGlu
dG8gcjAgKHIxIGlzIHplcm8taW5pdGlhbGl6ZWQpLgotLy8gMikgUG9zaXRpb24ga2VybmVsIGNl
bnRlcmVkIGF0IHN0YXJ0IG9mIHIwIChyMikgYW5kIGdlbmVyYXRlIG91dHB1dCBmcmFtZXMgdW50
aWwga2VybmVsIGlzIGNlbnRlcmVkIGF0IHN0YXJ0IG9mIHI0LgotLy8gICAgb3Igd2UndmUgZmlu
aXNoZWQgZ2VuZXJhdGluZyBhbGwgdGhlIG91dHB1dCBmcmFtZXMuCi0vLyAzKSBDb3B5IHIzIHRv
IHIxIGFuZCByNCB0byByMi4KLS8vIDQpIENvbnN1bWUgaW5wdXQgZnJhbWVzIGludG8gcjUgKHpl
cm8tcGFkIGlmIHdlIHJ1biBvdXQgb2YgaW5wdXQpLgotLy8gNSkgR290byAoMikgdW50aWwgYWxs
IG9mIGlucHV0IGlzIGNvbnN1bWVkLgorLy8gMSkgQWxsb2NhdGUgaW5wdXRfYnVmZmVyIG9mIHNp
emU6IG1fcmVxdWVzdEZyYW1lcyArIGtlcm5lbFNpemU7IHRoaXMgZW5zdXJlcworLy8gICAgdGhl
cmUncyBlbm91Z2ggcm9vbSB0byByZWFkIG1fcmVxdWVzdEZyYW1lcyBmcm9tIHRoZSBjYWxsYmFj
ayBpbnRvIHJlZ2lvbgorLy8gICAgcjAgKHdoaWNoIHdpbGwgbW92ZSBiZXR3ZWVuIHRoZSBmaXJz
dCBhbmQgc3Vic2VxdWVudCBwYXNzZXMpLgorLy8KKy8vIDIpIExldCByMSwgcjIgZWFjaCByZXBy
ZXNlbnQgaGFsZiB0aGUga2VybmVsIGNlbnRlcmVkIGFyb3VuZCByMDoKKy8vCisvLyAgICAgICAg
cjAgPSBtX2lucHV0QnVmZmVyICsga2VybmVsU2l6ZSAvIDIKKy8vICAgICAgICByMSA9IG1faW5w
dXRCdWZmZXIKKy8vICAgICAgICByMiA9IHIwCisvLworLy8gICAgcjAgaXMgYWx3YXlzIG1fcmVx
dWVzdEZyYW1lcyBpbiBzaXplLiByMSwgcjIgYXJlIGtlcm5lbFNpemUgLyAyIGluCisvLyAgICBz
aXplLiByMSBtdXN0IGJlIHplcm8gaW5pdGlhbGl6ZWQgdG8gYXZvaWQgY29udm9sdXRpb24gd2l0
aCBnYXJiYWdlIChzZWUKKy8vICAgIHN0ZXAgKDUpIGZvciB3aHkpLgorLy8KKy8vIDMpIExldCBy
MywgcjQgZWFjaCByZXByZXNlbnQgaGFsZiB0aGUga2VybmVsIHJpZ2h0IGFsaWduZWQgd2l0aCB0
aGUgZW5kIG9mCisvLyAgICByMCBhbmQgY2hvb3NlIG1fYmxvY2tTaXplIGFzIHRoZSBkaXN0YW5j
ZSBpbiBmcmFtZXMgYmV0d2VlbiByNCBhbmQgcjI6CisvLworLy8gICAgICAgIHIzID0gcjAgKyBt
X3JlcXVlc3RGcmFtZXMgLSBrZXJuZWxTaXplCisvLyAgICAgICAgcjQgPSByMCArIG1fcmVxdWVz
dEZyYW1lcyAtIGtlcm5lbFNpemUgLyAyCisvLyAgICAgICAgbV9ibG9ja1NpemUgPSByNCAtIHIy
ID0gbV9yZXF1ZXN0RnJhbWVzIC0ga2VybmVsU2l6ZSAvIDIKKy8vCisvLyA0KSBDb25zdW1lIG1f
cmVxdWVzdEZyYW1lcyBmcmFtZXMgaW50byByMC4KKy8vCisvLyA1KSBQb3NpdGlvbiBrZXJuZWwg
Y2VudGVyZWQgYXQgc3RhcnQgb2YgcjIgYW5kIGdlbmVyYXRlIG91dHB1dCBmcmFtZXMgdW50aWwK
Ky8vICAgIHRoZSBrZXJuZWwgaXMgY2VudGVyZWQgYXQgdGhlIHN0YXJ0IG9mIHI0IG9yIHdlJ3Zl
IGZpbmlzaGVkIGdlbmVyYXRpbmcKKy8vICAgIGFsbCB0aGUgb3V0cHV0IGZyYW1lcy4KKy8vCisv
LyA2KSBXcmFwIGxlZnQgb3ZlciBkYXRhIGZyb20gdGhlIHIzIHRvIHIxIGFuZCByNCB0byByMi4K
Ky8vCisvLyA3KSBJZiB3ZSdyZSBvbiB0aGUgc2Vjb25kIGxvYWQsIGluIG9yZGVyIHRvIGF2b2lk
IG92ZXJ3cml0aW5nIHRoZSBmcmFtZXMgd2UKKy8vICAgIGp1c3Qgd3JhcHBlZCBmcm9tIHI0IHdl
IG5lZWQgdG8gc2xpZGUgcjAgdG8gdGhlIHJpZ2h0IGJ5IHRoZSBzaXplIG9mCisvLyAgICByNCwg
d2hpY2ggaXMga2VybmVsU2l6ZSAvIDI6CisvLworLy8gICAgICAgIHIwID0gcjAgKyBrZXJuZWxT
aXplIC8gMiA9IG1faW5wdXRCdWZmZXIgKyBrZXJuZWxTaXplCisvLworLy8gICAgcjMsIHI0LCBh
bmQgbV9ibG9ja1NpemUgdGhlbiBuZWVkIHRvIGJlIHJlaW5pdGlhbGl6ZWQsIHNvIGdvdG8gKDMp
LgorLy8KKy8vIDgpIEVsc2UsIGlmIHdlJ3JlIG5vdCBvbiB0aGUgc2Vjb25kIGxvYWQsIGdvdG8g
KDQpLgogLy8KIC8vIG5vdGU6IHdlJ3JlIGdsb3NzaW5nIG92ZXIgaG93IHRoZSBzdWItc2FtcGxl
IGhhbmRsaW5nIHdvcmtzIHdpdGggbV92aXJ0dWFsU291cmNlSW5kZXgsIGV0Yy4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1TaW5jUmVzYW1wbGVyOjpTaW5jUmVzYW1wbGVyKGRvdWJsZSBzY2Fs
ZUZhY3RvciwgdW5zaWduZWQga2VybmVsU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZLZXJuZWxPZmZz
ZXRzKQorY29uc3RleHByIHVuc2lnbmVkIGRlZmF1bHRSZXF1ZXN0RnJhbWVzIHsgNTEyIH07Citj
b25zdGV4cHIgdW5zaWduZWQga2VybmVsU2l6ZSB7IDMyIH07Citjb25zdGV4cHIgdW5zaWduZWQg
bnVtYmVyT2ZLZXJuZWxPZmZzZXRzIHsgMzIgfTsKKworU2luY1Jlc2FtcGxlcjo6U2luY1Jlc2Ft
cGxlcihkb3VibGUgc2NhbGVGYWN0b3IsIE9wdGlvbmFsPHVuc2lnbmVkPiByZXF1ZXN0RnJhbWVz
KQogICAgIDogbV9zY2FsZUZhY3RvcihzY2FsZUZhY3RvcikKLSAgICAsIG1fa2VybmVsU2l6ZShr
ZXJuZWxTaXplKQotICAgICwgbV9udW1iZXJPZktlcm5lbE9mZnNldHMobnVtYmVyT2ZLZXJuZWxP
ZmZzZXRzKQotICAgICwgbV9rZXJuZWxTdG9yYWdlKG1fa2VybmVsU2l6ZSAqIChtX251bWJlck9m
S2VybmVsT2Zmc2V0cyArIDEpKQotICAgICwgbV92aXJ0dWFsU291cmNlSW5kZXgoMCkKLSAgICAs
IG1fYmxvY2tTaXplKDUxMikKLSAgICAsIG1faW5wdXRCdWZmZXIobV9ibG9ja1NpemUgKyBtX2tl
cm5lbFNpemUpIC8vIFNlZSBpbnB1dCBidWZmZXIgbGF5b3V0IGFib3ZlLgotICAgICwgbV9zb3Vy
Y2UoMCkKLSAgICAsIG1fc291cmNlRnJhbWVzQXZhaWxhYmxlKDApCi0gICAgLCBtX3NvdXJjZVBy
b3ZpZGVyKDApCi0gICAgLCBtX2lzQnVmZmVyUHJpbWVkKGZhbHNlKQorICAgICwgbV9rZXJuZWxT
dG9yYWdlKGtlcm5lbFNpemUgKiAobnVtYmVyT2ZLZXJuZWxPZmZzZXRzICsgMSkpCisgICAgLCBt
X3JlcXVlc3RGcmFtZXMocmVxdWVzdEZyYW1lcy52YWx1ZU9yKGRlZmF1bHRSZXF1ZXN0RnJhbWVz
KSkKKyAgICAsIG1faW5wdXRCdWZmZXIobV9yZXF1ZXN0RnJhbWVzICsga2VybmVsU2l6ZSkgLy8g
U2VlIGlucHV0IGJ1ZmZlciBsYXlvdXQgYWJvdmUuCisgICAgLCBtX3IxKG1faW5wdXRCdWZmZXIu
ZGF0YSgpKQorICAgICwgbV9yMihtX2lucHV0QnVmZmVyLmRhdGEoKSArIGtlcm5lbFNpemUgLyAy
KQogeworICAgIEFTU0VSVChtX3JlcXVlc3RGcmFtZXMgPiAwKTsKKyAgICB1cGRhdGVSZWdpb25z
KGZhbHNlKTsKKyAgICBBU1NFUlQobV9ibG9ja1NpemUgPiBrZXJuZWxTaXplKTsKICAgICBpbml0
aWFsaXplS2VybmVsKCk7CiB9CiAKK3ZvaWQgU2luY1Jlc2FtcGxlcjo6dXBkYXRlUmVnaW9ucyhi
b29sIGlzU2Vjb25kTG9hZCkKK3sKKyAgICAvLyBTZXR1cCB2YXJpb3VzIHJlZ2lvbiBwb2ludGVy
cyBpbiB0aGUgYnVmZmVyIChzZWUgZGlhZ3JhbSBhYm92ZSkuIElmIHdlJ3JlCisgICAgLy8gb24g
dGhlIHNlY29uZCBsb2FkIHdlIG5lZWQgdG8gc2xpZGUgbV9yMCB0byB0aGUgcmlnaHQgYnkga2Vy
bmVsU2l6ZSAvIDIuCisgICAgbV9yMCA9IG1faW5wdXRCdWZmZXIuZGF0YSgpICsgKGlzU2Vjb25k
TG9hZCA/IGtlcm5lbFNpemUgOiBrZXJuZWxTaXplIC8gMik7CisgICAgbV9yMyA9IG1fcjAgKyBt
X3JlcXVlc3RGcmFtZXMgLSBrZXJuZWxTaXplOworICAgIG1fcjQgPSBtX3IwICsgbV9yZXF1ZXN0
RnJhbWVzIC0ga2VybmVsU2l6ZSAvIDI7CisgICAgbV9ibG9ja1NpemUgPSBtX3I0IC0gbV9yMjsK
KworICAgIC8vIG1fcjEgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgYnVmZmVyLgorICAgIEFTU0VS
VChtX3IxID09IG1faW5wdXRCdWZmZXIuZGF0YSgpKTsKKyAgICAvLyBtX3IxIGxlZnQgb2YgbV9y
MiwgbV9yNCBsZWZ0IG9mIG1fcjMgYW5kIHNpemUgY29ycmVjdC4KKyAgICBBU1NFUlQoKG1fcjIg
LSBtX3IxKSA9PSAobV9yNCAtIG1fcjMpKTsKKyAgICAvLyBtX3IyIGxlZnQgb2YgcjMuCisgICAg
QVNTRVJUKG1fcjIgPD0gbV9yMyk7Cit9CisKIHZvaWQgU2luY1Jlc2FtcGxlcjo6aW5pdGlhbGl6
ZUtlcm5lbCgpCiB7CiAgICAgLy8gQmxhY2ttYW4gd2luZG93IHBhcmFtZXRlcnMuCkBAIC05OCwx
NiArMTYwLDE2IEBAIHZvaWQgU2luY1Jlc2FtcGxlcjo6aW5pdGlhbGl6ZUtlcm5lbCgpCiAgICAg
Ly8gVGhlIHNpbmMgZnVuY3Rpb24gaXMgYW4gaWRlYWxpemVkIGJyaWNrLXdhbGwgZmlsdGVyLCBi
dXQgc2luY2Ugd2UncmUgd2luZG93aW5nIGl0IHRoZQogICAgIC8vIHRyYW5zaXRpb24gZnJvbSBw
YXNzIHRvIHN0b3AgZG9lcyBub3QgaGFwcGVuIHJpZ2h0IGF3YXkuIFNvIHdlIHNob3VsZCBhZGp1
c3QgdGhlCiAgICAgLy8gbG93cGFzcyBmaWx0ZXIgY3V0b2ZmIHNsaWdodGx5IGRvd253YXJkIHRv
IGF2b2lkIHNvbWUgYWxpYXNpbmcgYXQgdGhlIHZlcnkgaGlnaC1lbmQuCi0gICAgLy8gRklYTUU6
IHRoaXMgdmFsdWUgaXMgZW1waXJpY2FsIGFuZCB0byBiZSBtb3JlIGV4YWN0IHNob3VsZCB2YXJ5
IGRlcGVuZGluZyBvbiBtX2tlcm5lbFNpemUuCisgICAgLy8gRklYTUU6IHRoaXMgdmFsdWUgaXMg
ZW1waXJpY2FsIGFuZCB0byBiZSBtb3JlIGV4YWN0IHNob3VsZCB2YXJ5IGRlcGVuZGluZyBvbiBr
ZXJuZWxTaXplLgogICAgIHNpbmNTY2FsZUZhY3RvciAqPSAwLjk7CiAKLSAgICBpbnQgbiA9IG1f
a2VybmVsU2l6ZTsKKyAgICBpbnQgbiA9IGtlcm5lbFNpemU7CiAgICAgaW50IGhhbGZTaXplID0g
biAvIDI7CiAKICAgICAvLyBHZW5lcmF0ZXMgYSBzZXQgb2Ygd2luZG93ZWQgc2luYygpIGtlcm5l
bHMuCiAgICAgLy8gV2UgZ2VuZXJhdGUgYSByYW5nZSBvZiBzdWItc2FtcGxlIG9mZnNldHMgZnJv
bSAwLjAgdG8gMS4wLgotICAgIGZvciAodW5zaWduZWQgb2Zmc2V0SW5kZXggPSAwOyBvZmZzZXRJ
bmRleCA8PSBtX251bWJlck9mS2VybmVsT2Zmc2V0czsgKytvZmZzZXRJbmRleCkgewotICAgICAg
ICBkb3VibGUgc3Vic2FtcGxlT2Zmc2V0ID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihvZmZzZXRJbmRl
eCkgLyBtX251bWJlck9mS2VybmVsT2Zmc2V0czsKKyAgICBmb3IgKHVuc2lnbmVkIG9mZnNldElu
ZGV4ID0gMDsgb2Zmc2V0SW5kZXggPD0gbnVtYmVyT2ZLZXJuZWxPZmZzZXRzOyArK29mZnNldElu
ZGV4KSB7CisgICAgICAgIGRvdWJsZSBzdWJzYW1wbGVPZmZzZXQgPSBzdGF0aWNfY2FzdDxkb3Vi
bGU+KG9mZnNldEluZGV4KSAvIG51bWJlck9mS2VybmVsT2Zmc2V0czsKIAogICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IG47ICsraSkgewogICAgICAgICAgICAgLy8gQ29tcHV0ZSB0aGUgc2lu
YygpIHdpdGggb2Zmc2V0LgpAQCAtMTIwLDcgKzE4Miw3IEBAIHZvaWQgU2luY1Jlc2FtcGxlcjo6
aW5pdGlhbGl6ZUtlcm5lbCgpCiAgICAgICAgICAgICBkb3VibGUgd2luZG93ID0gYTAgLSBhMSAq
IGNvcygyLjAgKiBwaURvdWJsZSAqIHgpICsgYTIgKiBjb3MoNC4wICogcGlEb3VibGUgKiB4KTsK
IAogICAgICAgICAgICAgLy8gV2luZG93IHRoZSBzaW5jKCkgZnVuY3Rpb24gYW5kIHN0b3JlIGF0
IHRoZSBjb3JyZWN0IG9mZnNldC4KLSAgICAgICAgICAgIG1fa2VybmVsU3RvcmFnZVtpICsgb2Zm
c2V0SW5kZXggKiBtX2tlcm5lbFNpemVdID0gc2luYyAqIHdpbmRvdzsKKyAgICAgICAgICAgIG1f
a2VybmVsU3RvcmFnZVtpICsgb2Zmc2V0SW5kZXggKiBrZXJuZWxTaXplXSA9IHNpbmMgKiB3aW5k
b3c7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0xOTAsNyArMjUyLDcgQEAgdm9pZCBTaW5jUmVz
YW1wbGVyOjpwcm9jZXNzKGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwg
dW5zaWduZWQgbnUKICAgICB1bnNpZ25lZCByZW1haW5pbmcgPSBudW1iZXJPZkRlc3RpbmF0aW9u
RnJhbWVzOwogICAgIAogICAgIHdoaWxlIChyZW1haW5pbmcpIHsKLSAgICAgICAgdW5zaWduZWQg
ZnJhbWVzVGhpc1RpbWUgPSBzdGQ6Om1pbihyZW1haW5pbmcsIG1fYmxvY2tTaXplKTsKKyAgICAg
ICAgdW5zaWduZWQgZnJhbWVzVGhpc1RpbWUgPSBzdGQ6Om1pbihyZW1haW5pbmcsIG1fcmVxdWVz
dEZyYW1lcyk7CiAgICAgICAgIHByb2Nlc3MoJnNvdXJjZVByb3ZpZGVyLCBkZXN0aW5hdGlvbiwg
ZnJhbWVzVGhpc1RpbWUpOwogICAgICAgICAKICAgICAgICAgZGVzdGluYXRpb24gKz0gZnJhbWVz
VGhpc1RpbWU7CkBAIC0yMDAsMjcgKzI2MiwxOCBAQCB2b2lkIFNpbmNSZXNhbXBsZXI6OnByb2Nl
c3MoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBudQog
CiB2b2lkIFNpbmNSZXNhbXBsZXI6OnByb2Nlc3MoQXVkaW9Tb3VyY2VQcm92aWRlciogc291cmNl
UHJvdmlkZXIsIGZsb2F0KiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKIHsK
LSAgICBib29sIGlzR29vZCA9IHNvdXJjZVByb3ZpZGVyICYmIG1fYmxvY2tTaXplID4gbV9rZXJu
ZWxTaXplICYmIG1faW5wdXRCdWZmZXIuc2l6ZSgpID49IG1fYmxvY2tTaXplICsgbV9rZXJuZWxT
aXplICYmICEobV9rZXJuZWxTaXplICUgMik7Ci0gICAgQVNTRVJUKGlzR29vZCk7Ci0gICAgaWYg
KCFpc0dvb2QpCisgICAgQVNTRVJUKHNvdXJjZVByb3ZpZGVyKTsKKyAgICBpZiAoIXNvdXJjZVBy
b3ZpZGVyKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgbV9zb3VyY2VQcm92aWRlciA9IHNv
dXJjZVByb3ZpZGVyOwogCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZEZXN0aW5hdGlvbkZyYW1lcyA9
IGZyYW1lc1RvUHJvY2VzczsKLSAgICAKLSAgICAvLyBTZXR1cCB2YXJpb3VzIHJlZ2lvbiBwb2lu
dGVycyBpbiB0aGUgYnVmZmVyIChzZWUgZGlhZ3JhbSBhYm92ZSkuCi0gICAgZmxvYXQqIHIwID0g
bV9pbnB1dEJ1ZmZlci5kYXRhKCkgKyBtX2tlcm5lbFNpemUgLyAyOwotICAgIGZsb2F0KiByMSA9
IG1faW5wdXRCdWZmZXIuZGF0YSgpOwotICAgIGZsb2F0KiByMiA9IHIwOwotICAgIGZsb2F0KiBy
MyA9IHIwICsgbV9ibG9ja1NpemUgLSBtX2tlcm5lbFNpemUgLyAyOwotICAgIGZsb2F0KiByNCA9
IHIwICsgbV9ibG9ja1NpemU7Ci0gICAgZmxvYXQqIHI1ID0gcjAgKyBtX2tlcm5lbFNpemUgLyAy
OwogCiAgICAgLy8gU3RlcCAoMSkKICAgICAvLyBQcmltZSB0aGUgaW5wdXQgYnVmZmVyIGF0IHRo
ZSBzdGFydCBvZiB0aGUgaW5wdXQgc3RyZWFtLgogICAgIGlmICghbV9pc0J1ZmZlclByaW1lZCkg
ewotICAgICAgICBjb25zdW1lU291cmNlKHIwLCBtX2Jsb2NrU2l6ZSArIG1fa2VybmVsU2l6ZSAv
IDIpOworICAgICAgICBjb25zdW1lU291cmNlKG1fcjAsIG1fcmVxdWVzdEZyYW1lcyk7CiAgICAg
ICAgIG1faXNCdWZmZXJQcmltZWQgPSB0cnVlOwogICAgIH0KICAgICAKQEAgLTIzMiwxNCArMjg1
LDE0IEBAIHZvaWQgU2luY1Jlc2FtcGxlcjo6cHJvY2VzcyhBdWRpb1NvdXJjZVByb3ZpZGVyKiBz
b3VyY2VQcm92aWRlciwgZmxvYXQqIGRlc3RpbmF0CiAgICAgICAgICAgICBpbnQgc291cmNlSW5k
ZXhJID0gc3RhdGljX2Nhc3Q8aW50PihtX3ZpcnR1YWxTb3VyY2VJbmRleCk7CiAgICAgICAgICAg
ICBkb3VibGUgc3Vic2FtcGxlUmVtYWluZGVyID0gbV92aXJ0dWFsU291cmNlSW5kZXggLSBzb3Vy
Y2VJbmRleEk7CiAKLSAgICAgICAgICAgIGRvdWJsZSB2aXJ0dWFsT2Zmc2V0SW5kZXggPSBzdWJz
YW1wbGVSZW1haW5kZXIgKiBtX251bWJlck9mS2VybmVsT2Zmc2V0czsKKyAgICAgICAgICAgIGRv
dWJsZSB2aXJ0dWFsT2Zmc2V0SW5kZXggPSBzdWJzYW1wbGVSZW1haW5kZXIgKiBudW1iZXJPZktl
cm5lbE9mZnNldHM7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0SW5kZXggPSBzdGF0aWNfY2FzdDxp
bnQ+KHZpcnR1YWxPZmZzZXRJbmRleCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGZsb2F0
KiBrMSA9IG1fa2VybmVsU3RvcmFnZS5kYXRhKCkgKyBvZmZzZXRJbmRleCAqIG1fa2VybmVsU2l6
ZTsKLSAgICAgICAgICAgIGZsb2F0KiBrMiA9IGsxICsgbV9rZXJuZWxTaXplOworICAgICAgICAg
ICAgZmxvYXQqIGsxID0gbV9rZXJuZWxTdG9yYWdlLmRhdGEoKSArIG9mZnNldEluZGV4ICoga2Vy
bmVsU2l6ZTsKKyAgICAgICAgICAgIGZsb2F0KiBrMiA9IGsxICsga2VybmVsU2l6ZTsKIAogICAg
ICAgICAgICAgLy8gSW5pdGlhbGl6ZSBpbnB1dCBwb2ludGVyIGJhc2VkIG9uIHF1YW50aXplZCBt
X3ZpcnR1YWxTb3VyY2VJbmRleC4KLSAgICAgICAgICAgIGZsb2F0KiBpbnB1dFAgPSByMSArIHNv
dXJjZUluZGV4STsKKyAgICAgICAgICAgIGZsb2F0KiBpbnB1dFAgPSBtX3IxICsgc291cmNlSW5k
ZXhJOwogCiAgICAgICAgICAgICAvLyBXZSdsbCBjb21wdXRlICJjb252b2x1dGlvbnMiIGZvciB0
aGUgdHdvIGtlcm5lbHMgd2hpY2ggc3RyYWRkbGUgbV92aXJ0dWFsU291cmNlSW5kZXgKICAgICAg
ICAgICAgIGZsb2F0IHN1bTEgPSAwOwpAQCAtMjQ5LDcgKzMwMiw3IEBAIHZvaWQgU2luY1Jlc2Ft
cGxlcjo6cHJvY2VzcyhBdWRpb1NvdXJjZVByb3ZpZGVyKiBzb3VyY2VQcm92aWRlciwgZmxvYXQq
IGRlc3RpbmF0CiAgICAgICAgICAgICBkb3VibGUga2VybmVsSW50ZXJwb2xhdGlvbkZhY3RvciA9
IHZpcnR1YWxPZmZzZXRJbmRleCAtIG9mZnNldEluZGV4OwogCiAgICAgICAgICAgICAvLyBHZW5l
cmF0ZSBhIHNpbmdsZSBvdXRwdXQgc2FtcGxlLiAKLSAgICAgICAgICAgIGludCBuID0gbV9rZXJu
ZWxTaXplOworICAgICAgICAgICAgaW50IG4gPSBrZXJuZWxTaXplOwogCiAjZGVmaW5lIENPTlZP
TFZFX09ORV9TQU1QTEUgICAgICBcCiAgICAgICAgICAgICBpbnB1dCA9ICppbnB1dFArKzsgICBc
CkBAIC00NTUsMTYgKzUwOCwyMCBAQCB2b2lkIFNpbmNSZXNhbXBsZXI6OnByb2Nlc3MoQXVkaW9T
b3VyY2VQcm92aWRlciogc291cmNlUHJvdmlkZXIsIGZsb2F0KiBkZXN0aW5hdAogICAgICAgICB9
CiAKICAgICAgICAgLy8gV3JhcCBiYWNrIGFyb3VuZCB0byB0aGUgc3RhcnQuCisgICAgICAgIEFT
U0VSVChtX3ZpcnR1YWxTb3VyY2VJbmRleCA+PSBtX2Jsb2NrU2l6ZSk7CiAgICAgICAgIG1fdmly
dHVhbFNvdXJjZUluZGV4IC09IG1fYmxvY2tTaXplOwogCi0gICAgICAgIC8vIFN0ZXAgKDMpIENv
cHkgcjMgdG8gcjEgYW5kIHI0IHRvIHIyLgorICAgICAgICAvLyBTdGVwICgzKSBDb3B5IHIzIHRv
IHIxLgogICAgICAgICAvLyBUaGlzIHdyYXBzIHRoZSBsYXN0IGlucHV0IGZyYW1lcyBiYWNrIHRv
IHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLgotICAgICAgICBtZW1jcHkocjEsIHIzLCBzaXplb2Yo
ZmxvYXQpICogKG1fa2VybmVsU2l6ZSAvIDIpKTsKLSAgICAgICAgbWVtY3B5KHIyLCByNCwgc2l6
ZW9mKGZsb2F0KSAqIChtX2tlcm5lbFNpemUgLyAyKSk7CisgICAgICAgIG1lbWNweShtX3IxLCBt
X3IzLCBzaXplb2YoZmxvYXQpICoga2VybmVsU2l6ZSk7CisKKyAgICAgICAgLy8gU3RlcCAoNCkg
LS0gUmVpbml0aWFsaXplIHJlZ2lvbnMgaWYgbmVjZXNzYXJ5LgorICAgICAgICBpZiAobV9yMCA9
PSBtX3IyKQorICAgICAgICAgICAgdXBkYXRlUmVnaW9ucyh0cnVlKTsKIAotICAgICAgICAvLyBT
dGVwICg0KQorICAgICAgICAvLyBTdGVwICg1KQogICAgICAgICAvLyBSZWZyZXNoIHRoZSBidWZm
ZXIgd2l0aCBtb3JlIGlucHV0LgotICAgICAgICBjb25zdW1lU291cmNlKHI1LCBtX2Jsb2NrU2l6
ZSk7CisgICAgICAgIGNvbnN1bWVTb3VyY2UobV9yMCwgbV9yZXF1ZXN0RnJhbWVzKTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNh
bXBsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuaApp
bmRleCBiMTZlYjUxMzI1ODhkYjVmMWE5MTg1NTYwY2RlOTdkODFkYzRkYTI1Li45M2JmMDRkOTBm
MDJiMjdjNzk1OWUxYjkzYjM2NzQyZGRmZDk3YzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5oCkBAIC0zOSwxMSArMzksMTAgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBTaW5jUmVzYW1wbGVyIGZpbmFsIHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKLXB1YmxpYzogICAKK3B1YmxpYzoKICAgICAvLyBzY2FsZUZhY3RvciA9
PSBzb3VyY2VTYW1wbGVSYXRlIC8gZGVzdGluYXRpb25TYW1wbGVSYXRlCi0gICAgLy8ga2VybmVs
U2l6ZSBjYW4gYmUgYWRqdXN0ZWQgZm9yIHF1YWxpdHkgKGhpZ2hlciBpcyBiZXR0ZXIpCi0gICAg
Ly8gbnVtYmVyT2ZLZXJuZWxPZmZzZXRzIGlzIHVzZWQgZm9yIGludGVycG9sYXRpb24gYW5kIGlz
IHRoZSBudW1iZXIgb2Ygc3ViLXNhbXBsZSBrZXJuZWwgc2hpZnRzLgotICAgIFNpbmNSZXNhbXBs
ZXIoZG91YmxlIHNjYWxlRmFjdG9yLCB1bnNpZ25lZCBrZXJuZWxTaXplID0gMzIsIHVuc2lnbmVk
IG51bWJlck9mS2VybmVsT2Zmc2V0cyA9IDMyKTsKKyAgICAvLyByZXF1ZXN0RnJhbWVzIGNvbnRy
b2xzIHRoZSBzaXplIGluIGZyYW1lcyBvZiB0aGUgYnVmZmVyIHJlcXVlc3RlZCBieSBlYWNoIHBy
b3ZpZGVJbnB1dCgpIGNhbGwuCisgICAgU2luY1Jlc2FtcGxlcihkb3VibGUgc2NhbGVGYWN0b3Is
IE9wdGlvbmFsPHVuc2lnbmVkPiByZXF1ZXN0RnJhbWVzID0gV1RGOjpudWxsb3B0KTsKICAgICAK
ICAgICAvLyBQcm9jZXNzZXMgbnVtYmVyT2ZTb3VyY2VGcmFtZXMgZnJvbSBzb3VyY2UgdG8gcHJv
ZHVjZSBudW1iZXJPZlNvdXJjZUZyYW1lcyAvIHNjYWxlRmFjdG9yIGZyYW1lcyBpbiBkZXN0aW5h
dGlvbi4KICAgICB2b2lkIHByb2Nlc3MoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3Rp
bmF0aW9uLCB1bnNpZ25lZCBudW1iZXJPZlNvdXJjZUZyYW1lcyk7CkBAIC01NCwxMCArNTMsOSBA
QCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBpbml0aWFsaXplS2VybmVsKCk7CiAgICAg
dm9pZCBjb25zdW1lU291cmNlKGZsb2F0KiBidWZmZXIsIHVuc2lnbmVkIG51bWJlck9mU291cmNl
RnJhbWVzKTsKKyAgICB2b2lkIHVwZGF0ZVJlZ2lvbnMoYm9vbCBpc1NlY29uZExvYWQpOwogICAg
IAogICAgIGRvdWJsZSBtX3NjYWxlRmFjdG9yOwotICAgIHVuc2lnbmVkIG1fa2VybmVsU2l6ZTsK
LSAgICB1bnNpZ25lZCBtX251bWJlck9mS2VybmVsT2Zmc2V0czsKIAogICAgIC8vIG1fa2VybmVs
U3RvcmFnZSBoYXMgbV9udW1iZXJPZktlcm5lbE9mZnNldHMga2VybmVscyBiYWNrLXRvLWJhY2ss
IGVhY2ggb2Ygc2l6ZSBtX2tlcm5lbFNpemUuCiAgICAgLy8gVGhlIGtlcm5lbCBvZmZzZXRzIGFy
ZSBzdWItc2FtcGxlIHNoaWZ0cyBvZiBhIHdpbmRvd2VkIHNpbmMoKSBzaGlmdGVkIGZyb20gMC4w
IHRvIDEuMCBzYW1wbGUuCkBAIC02NSwyMiArNjMsMzMgQEAgcHJvdGVjdGVkOgogICAgIAogICAg
IC8vIG1fdmlydHVhbFNvdXJjZUluZGV4IGlzIGFuIGluZGV4IG9uIHRoZSBzb3VyY2UgaW5wdXQg
YnVmZmVyIHdpdGggc3ViLXNhbXBsZSBwcmVjaXNpb24uCiAgICAgLy8gSXQgbXVzdCBiZSBkb3Vi
bGUgcHJlY2lzaW9uIHRvIGF2b2lkIGRyaWZ0LgotICAgIGRvdWJsZSBtX3ZpcnR1YWxTb3VyY2VJ
bmRleDsKKyAgICBkb3VibGUgbV92aXJ0dWFsU291cmNlSW5kZXggeyAwIH07CiAgICAgCiAgICAg
Ly8gVGhpcyBpcyB0aGUgbnVtYmVyIG9mIGRlc3RpbmF0aW9uIGZyYW1lcyB3ZSBnZW5lcmF0ZSBw
ZXIgcHJvY2Vzc2luZyBwYXNzIG9uIHRoZSBidWZmZXIuCi0gICAgdW5zaWduZWQgbV9ibG9ja1Np
emU7CisgICAgdW5zaWduZWQgbV9yZXF1ZXN0RnJhbWVzOworCisgICAgLy8gVGhlIG51bWJlciBv
ZiBzb3VyY2UgZnJhbWVzIHByb2Nlc3NlZCBwZXIgcGFzcy4KKyAgICB1bnNpZ25lZCBtX2Jsb2Nr
U2l6ZSB7IDAgfTsKIAogICAgIC8vIFNvdXJjZSBpcyBjb3BpZWQgaW50byB0aGlzIGJ1ZmZlciBm
b3IgZWFjaCBwcm9jZXNzaW5nIHBhc3MuCiAgICAgQXVkaW9GbG9hdEFycmF5IG1faW5wdXRCdWZm
ZXI7CiAKLSAgICBjb25zdCBmbG9hdCogbV9zb3VyY2U7Ci0gICAgdW5zaWduZWQgbV9zb3VyY2VG
cmFtZXNBdmFpbGFibGU7CisgICAgLy8gUG9pbnRlcnMgdG8gdGhlIHZhcmlvdXMgcmVnaW9ucyBp
bnNpZGUgfG1faW5wdXRCdWZmZXJ8LiBTZWUgdGhlIGRpYWdyYW0gYXQKKyAgICAvLyB0aGUgdG9w
IG9mIHRoZSAuY3BwIGZpbGUgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgZmxvYXQqIG1fcjAg
eyBudWxscHRyIH07CisgICAgZmxvYXQqIGNvbnN0IG1fcjEgeyBudWxscHRyIH07CisgICAgZmxv
YXQqIGNvbnN0IG1fcjIgeyBudWxscHRyIH07CisgICAgZmxvYXQqIG1fcjMgeyBudWxscHRyIH07
CisgICAgZmxvYXQqIG1fcjQgeyBudWxscHRyIH07CisKKyAgICBjb25zdCBmbG9hdCogbV9zb3Vy
Y2UgeyBudWxscHRyIH07CisgICAgdW5zaWduZWQgbV9zb3VyY2VGcmFtZXNBdmFpbGFibGUgeyAw
IH07CiAgICAgCiAgICAgLy8gbV9zb3VyY2VQcm92aWRlciBpcyB1c2VkIHRvIHByb3ZpZGUgdGhl
IGF1ZGlvIGlucHV0IHN0cmVhbSB0byB0aGUgcmVzYW1wbGVyLgotICAgIEF1ZGlvU291cmNlUHJv
dmlkZXIqIG1fc291cmNlUHJvdmlkZXI7ICAgIAorICAgIEF1ZGlvU291cmNlUHJvdmlkZXIqIG1f
c291cmNlUHJvdmlkZXIgeyBudWxscHRyIH07CiAKICAgICAvLyBUaGUgYnVmZmVyIGlzIHByaW1l
ZCBvbmNlIGF0IHRoZSB2ZXJ5IGJlZ2lubmluZyBvZiBwcm9jZXNzaW5nLgotICAgIGJvb2wgbV9p
c0J1ZmZlclByaW1lZDsKKyAgICBib29sIG1faXNCdWZmZXJQcmltZWQgeyBmYWxzZSB9OwogCiAg
ICAgUmVmUHRyPEF1ZGlvQnVzPiBtX2ludGVybmFsQnVzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29j
b2EuY3BwCmluZGV4IGFlNjM1MGZjMTFhNDY5NDc4ZTgwYzBiZmMzMzdjMjA4YjgzOTNlNGUuLjc3
NWQ2MmRlOGFkZTc5OTgzN2I0MDVjOWE0MTk2ODI1NGVmNWQyMzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlv
bkNvY29hLmNwcApAQCAtMjksMTMgKzI5LDE2IEBACiAjaWYgRU5BQkxFKFdFQl9BVURJTykKIAog
I2luY2x1ZGUgIkF1ZGlvQnVzLmgiCi0jaW5jbHVkZSAiQXVkaW9JT0NhbGxiYWNrLmgiCiAjaW5j
bHVkZSAiQXVkaW9TZXNzaW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk11
bHRpQ2hhbm5lbFJlc2FtcGxlci5oIgorI2luY2x1ZGUgIlB1c2hQdWxsRklGTy5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNvbnN0IGludCBrUmVuZGVyQnVmZmVyU2l6ZSA9IDEyODsKK2Nv
bnN0ZXhwciBzaXplX3Qga1JlbmRlckJ1ZmZlclNpemUgPSAxMjg7CisKK2NvbnN0ZXhwciBzaXpl
X3QgZmlmb1NpemUgPSA5NiAqIGtSZW5kZXJCdWZmZXJTaXplOwogCiBDcmVhdGVBdWRpb0Rlc3Rp
bmF0aW9uQ29jb2FPdmVycmlkZSBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OmNyZWF0ZU92ZXJyaWRl
ID0gbnVsbHB0cjsKIApAQCAtNjgsMTQgKzcxLDI0IEBAIHVuc2lnbmVkIGxvbmcgQXVkaW9EZXN0
aW5hdGlvbjo6bWF4Q2hhbm5lbENvdW50KCkKICAgICByZXR1cm4gQXVkaW9TZXNzaW9uOjpzaGFy
ZWRTZXNzaW9uKCkubWF4aW11bU51bWJlck9mT3V0cHV0Q2hhbm5lbHMoKTsKIH0KIAorLy8gRklY
TUU6IFdlIHNob3VsZCBub3QgYmUgaGFyZGNvZGluZyB0aGUgbnVtYmVyIG9mIGlucHV0IGNoYW5u
ZWxzLgorY29uc3RleHByIHVuc2lnbmVkIGxlZ2FjeU51bWJlck9mT3V0cHV0Q2hhbm5lbHMgeyAy
IH07CisKIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hKEF1ZGlv
SU9DYWxsYmFjayYgY2FsbGJhY2ssIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBtX291dHB1dFVu
aXQoMCkKICAgICAsIG1fY2FsbGJhY2soY2FsbGJhY2spCi0gICAgLCBtX3JlbmRlckJ1cyhBdWRp
b0J1czo6Y3JlYXRlKDIsIGtSZW5kZXJCdWZmZXJTaXplLCBmYWxzZSkucmVsZWFzZU5vbk51bGwo
KSkKLSAgICAsIG1fc3BhcmVCdXMoQXVkaW9CdXM6OmNyZWF0ZSgyLCBrUmVuZGVyQnVmZmVyU2l6
ZSwgdHJ1ZSkucmVsZWFzZU5vbk51bGwoKSkKLSAgICAsIG1fc2FtcGxlUmF0ZShzYW1wbGVSYXRl
KQorICAgICwgbV9vdXRwdXRCdXMoQXVkaW9CdXM6OmNyZWF0ZShsZWdhY3lOdW1iZXJPZk91dHB1
dENoYW5uZWxzLCBrUmVuZGVyQnVmZmVyU2l6ZSwgZmFsc2UpLnJlbGVhc2VOb25OdWxsKCkpCisg
ICAgLCBtX3JlbmRlckJ1cyhBdWRpb0J1czo6Y3JlYXRlKGxlZ2FjeU51bWJlck9mT3V0cHV0Q2hh
bm5lbHMsIGtSZW5kZXJCdWZmZXJTaXplKS5yZWxlYXNlTm9uTnVsbCgpKQorICAgICwgbV9maWZv
KG1ha2VVbmlxdWVSZWY8UHVzaFB1bGxGSUZPPihsZWdhY3lOdW1iZXJPZk91dHB1dENoYW5uZWxz
LCBmaWZvU2l6ZSkpCisgICAgLCBtX2NvbnRleHRTYW1wbGVSYXRlKHNhbXBsZVJhdGUpCiB7CiAg
ICAgY29uZmlndXJlKCk7CisKKyAgICBhdXRvIGhhcmR3YXJlU2FtcGxlUmF0ZSA9IHRoaXMtPmhh
cmR3YXJlU2FtcGxlUmF0ZSgpOworICAgIGlmIChzYW1wbGVSYXRlICE9IGhhcmR3YXJlU2FtcGxl
UmF0ZSkgeworICAgICAgICBkb3VibGUgc2NhbGVGYWN0b3IgPSBzdGF0aWNfY2FzdDxkb3VibGU+
KHNhbXBsZVJhdGUpIC8gaGFyZHdhcmVTYW1wbGVSYXRlOworICAgICAgICBtX3Jlc2FtcGxlciA9
IG1ha2VVbmlxdWU8TXVsdGlDaGFubmVsUmVzYW1wbGVyPihzY2FsZUZhY3RvciwgbGVnYWN5TnVt
YmVyT2ZPdXRwdXRDaGFubmVscywga1JlbmRlckJ1ZmZlclNpemUpOworICAgIH0KIH0KIAogQXVk
aW9EZXN0aW5hdGlvbkNvY29hOjp+QXVkaW9EZXN0aW5hdGlvbkNvY29hKCkKQEAgLTExNiwxMSAr
MTI5LDExIEBAIHZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzZXRJc1BsYXlpbmcoYm9vbCBp
c1BsYXlpbmcpCiAgICAgbV9jYWxsYmFjay5pc1BsYXlpbmdEaWRDaGFuZ2UoKTsKIH0KIAotdm9p
ZCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihB
dWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24mIHN0cmVhbUZvcm1hdCwgZmxvYXQgc2FtcGxlUmF0
ZSkKK3ZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3Jp
cHRpb24oQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiBzdHJlYW1Gb3JtYXQpCiB7CiAgICAg
Y29uc3QgaW50IGJ5dGVzUGVyRmxvYXQgPSBzaXplb2YoRmxvYXQzMik7CiAgICAgY29uc3QgaW50
IGJpdHNQZXJCeXRlID0gODsKLSAgICBzdHJlYW1Gb3JtYXQubVNhbXBsZVJhdGUgPSBzYW1wbGVS
YXRlOworICAgIHN0cmVhbUZvcm1hdC5tU2FtcGxlUmF0ZSA9IGhhcmR3YXJlU2FtcGxlUmF0ZSgp
OwogICAgIHN0cmVhbUZvcm1hdC5tRm9ybWF0SUQgPSBrQXVkaW9Gb3JtYXRMaW5lYXJQQ007CiAg
ICAgc3RyZWFtRm9ybWF0Lm1Gb3JtYXRGbGFncyA9IGtBdWRpb0Zvcm1hdEZsYWdzTmF0aXZlRmxv
YXRQYWNrZWQgfCBrQXVkaW9Gb3JtYXRGbGFnSXNOb25JbnRlcmxlYXZlZDsKICAgICBzdHJlYW1G
b3JtYXQubUJ5dGVzUGVyUGFja2V0ID0gYnl0ZXNQZXJGbG9hdDsKQEAgLTE0Myw0NCArMTU2LDMx
IEBAIHN0YXRpYyB2b2lkIGFzc2lnbkF1ZGlvQnVmZmVyc1RvQnVzKEF1ZGlvQnVmZmVyKiBidWZm
ZXJzLCBBdWRpb0J1cyYgYnVzLCBVSW50MzIKIC8vIFB1bGxzIG9uIG91ciBwcm92aWRlciB0byBn
ZXQgcmVuZGVyZWQgYXVkaW8gc3RyZWFtLgogT1NTdGF0dXMgQXVkaW9EZXN0aW5hdGlvbkNvY29h
OjpyZW5kZXIoY29uc3QgQXVkaW9UaW1lU3RhbXAqIHRpbWVzdGFtcCwgVUludDMyIG51bWJlck9m
RnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSkKIHsKLSAgICBBdWRpb0lPUG9zaXRpb24g
b3V0cHV0VGltZXN0YW1wOworICAgIGlmIChtX2ZpZm8tPmxlbmd0aCgpIDwgbnVtYmVyT2ZGcmFt
ZXMpCisgICAgICAgIHJldHVybiBub0VycjsKKwogICAgIGlmICh0aW1lc3RhbXApIHsKLSAgICAg
ICAgb3V0cHV0VGltZXN0YW1wID0gewotICAgICAgICAgICAgU2Vjb25kcyB7IHRpbWVzdGFtcC0+
bVNhbXBsZVRpbWUgLyBtX3NhbXBsZVJhdGUgfSwKKyAgICAgICAgbV9vdXRwdXRUaW1lc3RhbXAg
PSB7CisgICAgICAgICAgICBTZWNvbmRzIHsgdGltZXN0YW1wLT5tU2FtcGxlVGltZSAvIHNhbXBs
ZVJhdGUoKSB9LAogICAgICAgICAgICAgTW9ub3RvbmljVGltZTo6ZnJvbU1hY2hBYnNvbHV0ZVRp
bWUodGltZXN0YW1wLT5tSG9zdFRpbWUpCiAgICAgICAgIH07Ci0gICAgfQorICAgIH0gZWxzZQor
ICAgICAgICBtX291dHB1dFRpbWVzdGFtcCA9IEF1ZGlvSU9Qb3NpdGlvbiB7IH07CisKICAgICBh
dXRvKiBidWZmZXJzID0gaW9EYXRhLT5tQnVmZmVyczsKICAgICBVSW50MzIgbnVtYmVyT2ZCdWZm
ZXJzID0gaW9EYXRhLT5tTnVtYmVyQnVmZmVyczsKLSAgICBVSW50MzIgZnJhbWVzUmVtYWluaW5n
ID0gbnVtYmVyT2ZGcmFtZXM7Ci0gICAgVUludDMyIGZyYW1lT2Zmc2V0ID0gMDsKLSAgICB3aGls
ZSAoZnJhbWVzUmVtYWluaW5nID4gMCkgewotICAgICAgICBpZiAobV9zdGFydFNwYXJlRnJhbWUg
PCBtX2VuZFNwYXJlRnJhbWUpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX3N0YXJ0U3BhcmVGcmFt
ZSA8IG1fZW5kU3BhcmVGcmFtZSk7Ci0gICAgICAgICAgICBVSW50MzIgZnJhbWVzVGhpc1RpbWUg
PSBzdGQ6Om1pbjxVSW50MzI+KG1fZW5kU3BhcmVGcmFtZSAtIG1fc3RhcnRTcGFyZUZyYW1lLCBu
dW1iZXJPZkZyYW1lcyk7Ci0gICAgICAgICAgICBhc3NpZ25BdWRpb0J1ZmZlcnNUb0J1cyhidWZm
ZXJzLCBtX3JlbmRlckJ1cy5nZXQoKSwgbnVtYmVyT2ZCdWZmZXJzLCBudW1iZXJPZkZyYW1lcywg
ZnJhbWVPZmZzZXQsIGZyYW1lc1RoaXNUaW1lKTsKLSAgICAgICAgICAgIG1fcmVuZGVyQnVzLT5j
b3B5RnJvbVJhbmdlKG1fc3BhcmVCdXMuZ2V0KCksIG1fc3RhcnRTcGFyZUZyYW1lLCBtX2VuZFNw
YXJlRnJhbWUpOwotICAgICAgICAgICAgcHJvY2Vzc0J1c0FmdGVyUmVuZGVyKG1fcmVuZGVyQnVz
LmdldCgpLCBmcmFtZXNUaGlzVGltZSk7Ci0gICAgICAgICAgICBmcmFtZU9mZnNldCArPSBmcmFt
ZXNUaGlzVGltZTsKLSAgICAgICAgICAgIGZyYW1lc1JlbWFpbmluZyAtPSBmcmFtZXNUaGlzVGlt
ZTsKLSAgICAgICAgICAgIG1fc3RhcnRTcGFyZUZyYW1lICs9IGZyYW1lc1RoaXNUaW1lOwotICAg
ICAgICB9Ci0KLSAgICAgICAgVUludDMyIGZyYW1lc1RoaXNUaW1lID0gc3RkOjptaW48VUludDMy
PihrUmVuZGVyQnVmZmVyU2l6ZSwgZnJhbWVzUmVtYWluaW5nKTsKLSAgICAgICAgYXNzaWduQXVk
aW9CdWZmZXJzVG9CdXMoYnVmZmVycywgbV9yZW5kZXJCdXMuZ2V0KCksIG51bWJlck9mQnVmZmVy
cywgbnVtYmVyT2ZGcmFtZXMsIGZyYW1lT2Zmc2V0LCBmcmFtZXNUaGlzVGltZSk7Ci0KLSAgICAg
ICAgaWYgKCFmcmFtZXNUaGlzVGltZSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAo
ZnJhbWVzVGhpc1RpbWUgPCBrUmVuZGVyQnVmZmVyU2l6ZSkgewotICAgICAgICAgICAgbV9jYWxs
YmFjay5yZW5kZXIoMCwgbV9zcGFyZUJ1cy5wdHIoKSwga1JlbmRlckJ1ZmZlclNpemUsIG91dHB1
dFRpbWVzdGFtcCk7Ci0gICAgICAgICAgICBtX3JlbmRlckJ1cy0+Y29weUZyb21SYW5nZShtX3Nw
YXJlQnVzLmdldCgpLCAwLCBmcmFtZXNUaGlzVGltZSk7Ci0gICAgICAgICAgICBtX3N0YXJ0U3Bh
cmVGcmFtZSA9IGZyYW1lc1RoaXNUaW1lOwotICAgICAgICAgICAgbV9lbmRTcGFyZUZyYW1lID0g
a1JlbmRlckJ1ZmZlclNpemU7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbV9jYWxsYmFj
ay5yZW5kZXIoMCwgbV9yZW5kZXJCdXMucHRyKCksIGZyYW1lc1RoaXNUaW1lLCBvdXRwdXRUaW1l
c3RhbXApOwotICAgICAgICBwcm9jZXNzQnVzQWZ0ZXJSZW5kZXIobV9yZW5kZXJCdXMuZ2V0KCks
IGZyYW1lc1RoaXNUaW1lKTsKLSAgICAgICAgZnJhbWVPZmZzZXQgKz0gZnJhbWVzVGhpc1RpbWU7
Ci0gICAgICAgIGZyYW1lc1JlbWFpbmluZyAtPSBmcmFtZXNUaGlzVGltZTsKKworICAgIC8vIEFz
c29jaWF0ZSB0aGUgZGVzdGluYXRpb24gZGF0YSBhcnJheSB3aXRoIHRoZSBvdXRwdXQgYnVzIHRo
ZW4gZmlsbCB0aGUgRklGTy4KKyAgICBhc3NpZ25BdWRpb0J1ZmZlcnNUb0J1cyhidWZmZXJzLCBt
X291dHB1dEJ1cy5nZXQoKSwgbnVtYmVyT2ZCdWZmZXJzLCBudW1iZXJPZkZyYW1lcywgMCwgbnVt
YmVyT2ZGcmFtZXMpOworICAgIHNpemVfdCBmcmFtZXNUb1JlbmRlciA9IG1fZmlmby0+cHVsbCht
X291dHB1dEJ1cy5wdHIoKSwgbnVtYmVyT2ZGcmFtZXMpOworCisgICAgZm9yIChzaXplX3QgcHVz
aGVkRnJhbWVzID0gMDsgcHVzaGVkRnJhbWVzIDwgZnJhbWVzVG9SZW5kZXI7IHB1c2hlZEZyYW1l
cyArPSBrUmVuZGVyQnVmZmVyU2l6ZSkgeworICAgICAgICBpZiAobV9yZXNhbXBsZXIpCisgICAg
ICAgICAgICBtX3Jlc2FtcGxlci0+cHJvY2Vzcyh0aGlzLCBtX3JlbmRlckJ1cy5wdHIoKSwga1Jl
bmRlckJ1ZmZlclNpemUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2NhbGxiYWNrLnJl
bmRlcigwLCBtX3JlbmRlckJ1cy5wdHIoKSwga1JlbmRlckJ1ZmZlclNpemUsIG1fb3V0cHV0VGlt
ZXN0YW1wKTsKKworICAgICAgICBtX2ZpZm8tPnB1c2gobV9yZW5kZXJCdXMucHRyKCkpOwogICAg
IH0KIAogICAgIHJldHVybiBub0VycjsKQEAgLTE5Myw2ICsxOTMsMTIgQEAgT1NTdGF0dXMgQXVk
aW9EZXN0aW5hdGlvbkNvY29hOjppbnB1dFByb2Modm9pZCogdXNlckRhdGEsIEF1ZGlvVW5pdFJl
bmRlckFjdGlvbkYKICAgICByZXR1cm4gYXVkaW9PdXRwdXQtPnJlbmRlcih0aW1lc3RhbXAsIG51
bWJlck9mRnJhbWVzLCBpb0RhdGEpOwogfQogCit2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6
cHJvdmlkZUlucHV0KEF1ZGlvQnVzKiBidXMsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCit7Cisg
ICAgQVNTRVJUX1VOVVNFRChmcmFtZXNUb1Byb2Nlc3MsIGZyYW1lc1RvUHJvY2VzcyA9PSBrUmVu
ZGVyQnVmZmVyU2l6ZSk7CisgICAgbV9jYWxsYmFjay5yZW5kZXIoMCwgYnVzLCBrUmVuZGVyQnVm
ZmVyU2l6ZSwgbV9vdXRwdXRUaW1lc3RhbXApOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaAppbmRl
eCAzOTI4OGVhOWZiMzI0YmJhMzFkMTdjMjM2MDhlMTE1Y2FjYzAzMWFlLi5hZmI2MzA5Mjc2NTYw
MDRlOGVhOTUxY2YxMzZhMTMwNzc0ZTIzNTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaApAQCAt
MjgsMTcgKzI4LDIyIEBACiAjaWYgRU5BQkxFKFdFQl9BVURJTykKIAogI2luY2x1ZGUgIkF1ZGlv
RGVzdGluYXRpb24uaCIKKyNpbmNsdWRlICJBdWRpb0lPQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJB
dWRpb1NvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSA8QXVkaW9Vbml0L0F1ZGlvVW5pdC5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9CdXM7CitjbGFzcyBNdWx0aUNoYW5uZWxS
ZXNhbXBsZXI7CitjbGFzcyBQdXNoUHVsbEZJRk87CiAKIHVzaW5nIENyZWF0ZUF1ZGlvRGVzdGlu
YXRpb25Db2NvYU92ZXJyaWRlID0gc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVzdGluYXRpb24+KCop
KEF1ZGlvSU9DYWxsYmFjayYsIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAvLyBBbiBBdWRpb0Rlc3Rp
bmF0aW9uIHVzaW5nIENvcmVBdWRpbydzIGRlZmF1bHQgb3V0cHV0IEF1ZGlvVW5pdAotY2xhc3Mg
QXVkaW9EZXN0aW5hdGlvbkNvY29hIDogcHVibGljIEF1ZGlvRGVzdGluYXRpb24geworY2xhc3Mg
QXVkaW9EZXN0aW5hdGlvbkNvY29hIDogcHVibGljIEF1ZGlvRGVzdGluYXRpb24sIHB1YmxpYyBB
dWRpb1NvdXJjZVByb3ZpZGVyIHsKIHB1YmxpYzoKICAgICBBdWRpb0Rlc3RpbmF0aW9uQ29jb2Eo
QXVkaW9JT0NhbGxiYWNrJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAgICAgdmlydHVhbCB+QXVkaW9E
ZXN0aW5hdGlvbkNvY29hKCk7CkBAIC00OSwxNCArNTQsMTQgQEAgcHJvdGVjdGVkOgogICAgIHZv
aWQgc2V0SXNQbGF5aW5nKGJvb2wpOwogCiAgICAgYm9vbCBpc1BsYXlpbmcoKSBmaW5hbCB7IHJl
dHVybiBtX2lzUGxheWluZzsgfQotICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX3NhbXBsZVJhdGU7IH0KKyAgICBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9jb250ZXh0U2FtcGxlUmF0ZTsgfQogICAgIHVuc2lnbmVkIGZyYW1lc1Bl
ckJ1ZmZlcigpIGNvbnN0IGZpbmFsOwogICAgIEF1ZGlvVW5pdCYgb3V0cHV0VW5pdCgpIHsgcmV0
dXJuIG1fb3V0cHV0VW5pdDsgfQogICAgIAogICAgIC8vIERlZmF1bHRPdXRwdXRVbml0IGNhbGxi
YWNrCiAgICAgc3RhdGljIE9TU3RhdHVzIGlucHV0UHJvYyh2b2lkKiB1c2VyRGF0YSwgQXVkaW9V
bml0UmVuZGVyQWN0aW9uRmxhZ3MqLCBjb25zdCBBdWRpb1RpbWVTdGFtcCosIFVJbnQzMiBidXNO
dW1iZXIsIFVJbnQzMiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpOwog
Ci0gICAgdm9pZCBzZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oQXVkaW9TdHJlYW1CYXNp
Y0Rlc2NyaXB0aW9uJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgdm9pZCBzZXRBdWRpb1N0cmVh
bUJhc2ljRGVzY3JpcHRpb24oQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJik7CiAKIHByaXZh
dGU6CiAgICAgdm9pZCBzdGFydCgpIG92ZXJyaWRlOwpAQCAtNjQsNiArNjksOSBAQCBwcml2YXRl
OgogCiAgICAgZnJpZW5kIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0Rlc3RpbmF0aW9uPiBBdWRpb0Rl
c3RpbmF0aW9uOjpjcmVhdGUoQXVkaW9JT0NhbGxiYWNrJiwgY29uc3QgU3RyaW5nJiwgdW5zaWdu
ZWQsIHVuc2lnbmVkLCBmbG9hdCk7CiAgICAgCisgICAgLy8gQXVkaW9Tb3VyY2VQcm92aWRlci4K
KyAgICB2b2lkIHByb3ZpZGVJbnB1dChBdWRpb0J1cyosIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3Mp
IGZpbmFsOworCiAgICAgdm9pZCBjb25maWd1cmUoKTsKICAgICB2b2lkIHByb2Nlc3NCdXNBZnRl
clJlbmRlcihBdWRpb0J1cyYsIFVJbnQzMiBudW1iZXJPZkZyYW1lcyk7CiAKQEAgLTcxLDE0ICs3
OSwyMiBAQCBwcml2YXRlOgogCiAgICAgQXVkaW9Vbml0IG1fb3V0cHV0VW5pdDsKICAgICBBdWRp
b0lPQ2FsbGJhY2smIG1fY2FsbGJhY2s7CisKKyAgICAvLyBUbyBwYXNzIHRoZSBkYXRhIGZyb20g
RklGTyB0byB0aGUgYXVkaW8gZGV2aWNlIGNhbGxiYWNrLgorICAgIFJlZjxBdWRpb0J1cz4gbV9v
dXRwdXRCdXM7CisKKyAgICAvLyBUbyBwdXNoIHRoZSByZW5kZXJlZCByZXN1bHQgZnJvbSBXZWJB
dWRpbyBncmFwaCBpbnRvIHRoZSBGSUZPLgogICAgIFJlZjxBdWRpb0J1cz4gbV9yZW5kZXJCdXM7
Ci0gICAgUmVmPEF1ZGlvQnVzPiBtX3NwYXJlQnVzOwogCi0gICAgZmxvYXQgbV9zYW1wbGVSYXRl
OwotICAgIGJvb2wgbV9pc1BsYXlpbmcgeyBmYWxzZSB9OworICAgIC8vIFJlc29sdmVzIHRoZSBi
dWZmZXIgc2l6ZSBtaXNtYXRjaCBiZXR3ZWVuIHRoZSBXZWJBdWRpbyBlbmdpbmUgYW5kCisgICAg
Ly8gdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIGZyb20gdGhlIGFjdHVhbCBhdWRpbyBkZXZpY2UuCisg
ICAgVW5pcXVlUmVmPFB1c2hQdWxsRklGTz4gbV9maWZvOworCisgICAgc3RkOjp1bmlxdWVfcHRy
PE11bHRpQ2hhbm5lbFJlc2FtcGxlcj4gbV9yZXNhbXBsZXI7CisgICAgQXVkaW9JT1Bvc2l0aW9u
IG1fb3V0cHV0VGltZXN0YW1wOwogCi0gICAgdW5zaWduZWQgbV9zdGFydFNwYXJlRnJhbWUgeyAw
IH07Ci0gICAgdW5zaWduZWQgbV9lbmRTcGFyZUZyYW1lIHsgMCB9OworICAgIGZsb2F0IG1fY29u
dGV4dFNhbXBsZVJhdGU7CisgICAgYm9vbCBtX2lzUGxheWluZyB7IGZhbHNlIH07CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAKaW5kZXggMzkyOTUyMzZlMzAz
ZTBjMTg3MDVmZmJlZTU0NmI0ODhjNTJhYmVlNS4uYzQ3MzNkZTdmNzVkYTlhYjZkMDg3YTIzMWFk
OGViOTgxZGM2ODg4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
aW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2b2lk
IEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6Y29uZmlndXJlKCkKICAgICByZXN1bHQgPSBBdWRpb1Vu
aXRHZXRQcm9wZXJ0eShvdXRwdXRVbml0KCksIGtBdWRpb1VuaXRQcm9wZXJ0eV9TdHJlYW1Gb3Jt
YXQsIGtBdWRpb1VuaXRTY29wZV9PdXRwdXQsIDAsICh2b2lkKikmc3RyZWFtRm9ybWF0LCAmc2l6
ZSk7CiAgICAgQVNTRVJUKCFyZXN1bHQpOwogCi0gICAgc2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2Ny
aXB0aW9uKHN0cmVhbUZvcm1hdCwgc2FtcGxlUmF0ZSgpKTsKKyAgICBzZXRBdWRpb1N0cmVhbUJh
c2ljRGVzY3JpcHRpb24oc3RyZWFtRm9ybWF0KTsKIAogICAgIHJlc3VsdCA9IEF1ZGlvVW5pdFNl
dFByb3BlcnR5KG91dHB1dFVuaXQoKSwga0F1ZGlvVW5pdFByb3BlcnR5X1N0cmVhbUZvcm1hdCwg
a0F1ZGlvVW5pdFNjb3BlX0lucHV0LCAwLCAodm9pZCopJnN0cmVhbUZvcm1hdCwgc2l6ZW9mKEF1
ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbikpOwogICAgIEFTU0VSVCghcmVzdWx0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9u
TWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0
aW9uTWFjLmNwcAppbmRleCA3YTAxZWFlMDZlMjkwMzJmZDA1OThhMDBlMzRkZTIzNTdkMmE1N2E0
Li5mZjY5NDNiMzgwM2ExYjI1NTJiNThlYzI3MjUwMTQ1Y2Q4ZWE0OGEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25N
YWMuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpjb25m
aWd1cmUoKQogCiAgICAgLy8gU2V0IHN0cmVhbSBmb3JtYXQKICAgICBBdWRpb1N0cmVhbUJhc2lj
RGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OwotICAgIHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlw
dGlvbihzdHJlYW1Gb3JtYXQsIHNhbXBsZVJhdGUoKSk7CisgICAgc2V0QXVkaW9TdHJlYW1CYXNp
Y0Rlc2NyaXB0aW9uKHN0cmVhbUZvcm1hdCk7CiAKICAgICByZXN1bHQgPSBBdWRpb1VuaXRTZXRQ
cm9wZXJ0eShvdXRwdXRVbml0KCksIGtBdWRpb1VuaXRQcm9wZXJ0eV9TdHJlYW1Gb3JtYXQsIGtB
dWRpb1VuaXRTY29wZV9JbnB1dCwgMCwgKHZvaWQqKSZzdHJlYW1Gb3JtYXQsIHNpemVvZihBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24pKTsKICAgICBBU1NFUlQoIXJlc3VsdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Nv
dXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDhhZWMyZWEzZDRmMTc1OWRmN2NlNjQyMzZj
MzJiNjgxNTY0NGRmNzEuLjNkNmM4MjFhYTU5ZmM0NWE3ZWI3YzFmODMyNjJiNjhiY2Q5ZmM5NTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJj
ZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC01NSw2ICs1NSw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIFBBTDsKIAorLy8gRklYTUU6IFJl
bW92ZSB0aGlzIG9uY2Uga0NNVmlkZW9Db2RlY1R5cGVfVlA5IGlzIGFkZGVkIHRvIENNRm9ybWF0
RGVzY3JpcHRpb24uaAorY29uc3RleHByIENNVmlkZW9Db2RlY1R5cGUga0NNVmlkZW9Db2RlY1R5
cGVfVlA5IHsgJ3ZwMDknIH07CisKIHN0YXRpYyBib29sIGlzV2VibVBhcnNlckF2YWlsYWJsZSgp
CiB7CiAgICAgcmV0dXJuICEhd2VibTo6c3dhcCAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
aGFyZWRGZWF0dXJlcygpLndlYk1QYXJzZXJFbmFibGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1
cmVEZXZpY2UuaAppbmRleCA1Mjg4N2VjMjIzZTczMWIwOTdlYTA0NjI4YTYxYmM0NzVjOGNjMTZj
Li41OGExMmE5MTE0ZjZmZmUyZDQ0NzliOTFlYTA5YjdmMmQwZTAzNjIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURl
dmljZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3Jl
QXVkaW9DYXB0dXJlRGV2aWNlLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKSAmJiBQTEFURk9STShNQUMpCiAKICNpbmNsdWRlICJDYXB0dXJlRGV2aWNlLmgiCisj
aW5jbHVkZSA8cGFsL3NwaS9jZi9Db3JlQXVkaW9TUEkuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3Bw
CmluZGV4IDg2M2M0ZDU0YmY5NzhkMjhlYjUxMTM2NzI0MDE4ZGQxNzEzMzRjZDMuLjhlM2FmMDM1
MzZjMmQzYjc2Yjg2MzU2OGY4NzQ5NGI1YTNjMWY0YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcApA
QCAtNjcsNyArNjcsNyBAQCB2b2lkIE1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnRpY2soKQog
ewogICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgc2FtcGxlUmF0ZSA9IHNhbXBsZVJh
dGUoKSwgbnVtYmVyT2ZGcmFtZXNUb1Byb2Nlc3MgPSBtX251bWJlck9mRnJhbWVzVG9Qcm9jZXNz
XSB7CiAgICAgICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1Gb3JtYXQ7Ci0g
ICAgICAgIHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihzdHJlYW1Gb3JtYXQsIHNhbXBs
ZVJhdGUpOworICAgICAgICBzZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oc3RyZWFtRm9y
bWF0KTsKIAogICAgICAgICBXZWJBdWRpb0J1ZmZlckxpc3Qgd2ViQXVkaW9CdWZmZXJMaXN0IHsg
c3RyZWFtRm9ybWF0LCBudW1iZXJPZkZyYW1lc1RvUHJvY2VzcyB9OwogICAgICAgICBBdWRpb0Rl
c3RpbmF0aW9uQ29jb2E6OmlucHV0UHJvYyh0aGlzLCAwLCAwLCAwLCBudW1iZXJPZkZyYW1lc1Rv
UHJvY2Vzcywgd2ViQXVkaW9CdWZmZXJMaXN0Lmxpc3QoKSk7Cg==
</data>
<flag name="commit-queue"
          id="424023"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408580</attachid>
            <date>2020-09-11 18:50:17 -0700</date>
            <delta_ts>2020-09-11 19:55:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216425-20200911185016.patch</filename>
            <type>text/plain</type>
            <size>67105</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2OTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTk4OWVhNTIyNDI0MGRl
ZWVkYTdlYzgzNzVkNzMxMzY0MWQ0MWJkYS4uY2Y1ZWZhOTI4MzQxNjU1Nzg0OTQzYzc1NDcyZDk0
YzcwMmMwNGM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDIwLTA5LTExICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHByb3BlciBzdXBwb3J0
IGZvciBBdWRpb0NvbnRleHRPcHRpb25zLnNhbXBsZVJhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjQyNQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBwcm9wZXIgc3VwcG9ydCBmb3IgQXVkaW9D
b250ZXh0T3B0aW9ucy5zYW1wbGVSYXRlLiBQcmV2aW91c2x5LCBvdXIgQXVkaW9Db250ZXh0IGFs
d2F5cyBydW4KKyAgICAgICAgYXQgdGhlIGhhcmR3YXJlJ3Mgc2FtcGxlUmF0ZSwgbm8gbWF0dGVy
IHdoYXQgdmFsdWUgZm9yIHNldCBmb3IgQXVkaW9Db250ZXh0T3B0aW9ucy5zYW1wbGVSYXRlLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYmFzZWQgb24gdGhlIGZvbGxvd2luZyBDaHJvbWl1bSBj
aGFuZ2VzOgorICAgICAgICAtIGh0dHBzOi8vY2hyb21pdW0tcmV2aWV3Lmdvb2dsZXNvdXJjZS5j
b20vYy9jaHJvbWl1bS9zcmMvKy8xNDgyOTU3CisgICAgICAgIC0gaHR0cHM6Ly9jb2RlcmV2aWV3
LmNocm9taXVtLm9yZy8yNTQ5MDkzMDA5CisgICAgICAgIC0gaHR0cHM6Ly9jb2RlcmV2aWV3LmNo
cm9taXVtLm9yZy8xNDE4OTAzNQorCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0
QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVmYXVsdEF1ZGlv
RGVzdGluYXRpb25Ob2RlOjpjcmVhdGVEZXN0aW5hdGlvbik6CisgICAgICAgIFdoZW4gY3JlYXRp
bmcgYSBBdWRpb0Rlc3RpbmF0aW9uLCBwYXNzIHRoZSByZXF1ZXN0ZWQgQXVkaW9Db250ZXh0IHNh
bXBsZSByYXRlCisgICAgICAgIGluc3RlYWQgb2YgdGhlIGhhcmR3YXJlIHNhbXBsZSByYXRlLgor
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9GSUZPLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmg6IFJlbW92ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vUHVzaFB1bGxGSUZPLmNwcDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vUHVzaFB1bGxGSUZPLmg6IEFkZGVkLgorICAgICAgICBSZXBsYWNlIEF1ZGlv
RklGTyBhbmQgQXVkaW9QdWxsRklGTyB3aXRoIGEgbmV3IFB1c2hQdWxsRklGTyByZXBsYWNlbWVu
dCwgc2ltaWxhcmx5CisgICAgICAgIHRvIHdoYXQgd2FzIGRvbmUgaW4gQ2hyb21pdW0gaW46Cisg
ICAgICAgIC0gaHR0cHM6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8yNTQ5MDkzMDA5CisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TXVsdGlDaGFubmVsUmVzYW1wbGVyOjpNdWx0aUNoYW5uZWxSZXNhbXBsZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2luY1Jlc2FtcGxlcjo6U2luY1Jlc2FtcGxlcik6CisgICAgICAgIChXZWJDb3JlOjpTaW5j
UmVzYW1wbGVyOjp1cGRhdGVSZWdpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbmNSZXNhbXBs
ZXI6OmluaXRpYWxpemVLZXJuZWwpOgorICAgICAgICAoV2ViQ29yZTo6U2luY1Jlc2FtcGxlcjo6
cHJvY2Vzcyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5oOgorICAg
ICAgICBBZGQgcGFyYW1ldGVyIHRvIE11bHRpQ2hhbm5lbFJlc2FtcGxlciAmIFNpbmNSZXNhbXBs
ZXIgdG8gYWxsb3cgdGhlIGNsaWVudCB0byBzcGVjaWZ5CisgICAgICAgIHRoZSBzaXplIG9mIHRo
ZSBidWZmZXIgaW4gZnJhbWVzIHdoZW4gdGhlIHJlc2FtcGxlciBjYWxscyBBdWRpb1NvdXJjZVBy
b3ZpZGVyOjpwcm92aWRlSW5wdXQoKQorICAgICAgICB0byBnZXQgaW5wdXQgZGF0YS4gVGhpcyBp
cyBuZWNlc3NhcnkgYmVjYXVzZSBvdXIgV2ViQXVkaW8gaW1wbGVtZW50YXRpb24gdXNlcyBhIHN0
YXRpYworICAgICAgICBidWZmZXIgc2l6ZSBvZiAxMjggZnJhbWVzLiBUaGlzIGlzIHNpbWlsYXIg
dG8gd2hhdCB3YXMgZG9uZSBpbiBDaHJvbWl1bSBpbjoKKyAgICAgICAgLSBodHRwczovL2NvZGVy
ZXZpZXcuY2hyb21pdW0ub3JnLzE0MTg5MDM1CisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9E
ZXN0aW5hdGlvbkNvY29hOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2EpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpyZW5kZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpwcm92aWRlSW5wdXQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5oOgorICAg
ICAgICAtIEFkb3B0IFB1c2hQdWxsRklGTyB0byByZXNvbHZlIHRoZSBidWZmZXIgc2l6ZSBtaXNt
YXRjaCBiZXR3ZWVuIHRoZSBXZWJBdWRpbyBlbmdpbmUgYW5kCisgICAgICAgICAgdGhlIGNhbGxi
YWNrIGZ1bmN0aW9uIGZyb20gdGhlIGFjdHVhbCBhdWRpbyBkZXZpY2UsIHNpbWlsYXJseSB0byB3
aGF0IHdhcyBkb25lIGluIENocm9taXVtLgorICAgICAgICAtIFdoZW4gdGhlIGNvbnRleHQncyBz
YW1wbGUgcmF0ZSBkaWZmZXJzIGZyb20gdGhlIGhhcmR3YXJlIHNhbXBsZSByYXRlLCBpbnN0YW50
aWF0ZSBhCisgICAgICAgICAgTXVsdGlDaGFubmVsUmVzYW1wbGVyIGFuZCB1c2UgaW4gaW4gcmVu
ZGVyKCkgdG8gZG8gdGhlIHJlc2FtcGxpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9p
b3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3Rp
bmF0aW9uQ29jb2E6OmNvbmZpZ3VyZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1
ZGlvRGVzdGluYXRpb25NYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlv
bkNvY29hOjpjb25maWd1cmUpOgorICAgICAgICBEcm9wIHNhbXBsZVJhdGUgcGFyYW1ldGVyIGFz
IGl0IGlzIG5vIGxvbmdlciBuZWVkZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0F1ZGlvRGVz
dGluYXRpb25Db2NvYTo6dGljayk6CisKIDIwMjAtMDktMTEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBTZXJpYWxpemF0aW9uIHNob3VsZCBoYXZlIGV4Y2Vw
dGlvbiBjaGVja3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCBiMTU5ZTMyZjEx
YmE3OTRmMWZlMTA3NThkOTYwMGVlNmQwODk0MjhlLi40MjNkY2EzMGVkYjQ0MDQwYzE0ZTY5MzE4
NDFkMGYyM2EwOGVjZGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCkBAIC04Miwx
MCArODIsNyBAQCB2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6dW5pbml0aWFsaXpl
KCkKIAogdm9pZCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZURlc3RpbmF0aW9u
KCkKIHsKLSAgICBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUgPSBBdWRpb0Rlc3RpbmF0aW9uOjpo
YXJkd2FyZVNhbXBsZVJhdGUoKTsKLSAgICBMT0coV2ViQXVkaW8sICI+Pj4+IGhhcmR3YXJlU2Ft
cGxlUmF0ZSA9ICVmXG4iLCBoYXJkd2FyZVNhbXBsZVJhdGUpOwotCi0gICAgbV9kZXN0aW5hdGlv
biA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5tZWRpYVN0cmF0ZWd5KCkuY3JlYXRlQXVkaW9EZXN0
aW5hdGlvbigqdGhpcywgbV9pbnB1dERldmljZUlkLCBtX251bWJlck9mSW5wdXRDaGFubmVscywg
Y2hhbm5lbENvdW50KCksIGhhcmR3YXJlU2FtcGxlUmF0ZSk7CisgICAgbV9kZXN0aW5hdGlvbiA9
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5tZWRpYVN0cmF0ZWd5KCkuY3JlYXRlQXVkaW9EZXN0aW5h
dGlvbigqdGhpcywgbV9pbnB1dERldmljZUlkLCBtX251bWJlck9mSW5wdXRDaGFubmVscywgY2hh
bm5lbENvdW50KCksIG1fc2FtcGxlUmF0ZSk7CiB9CiAKIHZvaWQgRGVmYXVsdEF1ZGlvRGVzdGlu
YXRpb25Ob2RlOjplbmFibGVJbnB1dChjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CmluZGV4IDA4NzIxNjA2NjIwNmZlY2UwMWEwMGVlNWI0MzY1NDIyOWIyYWE5ZTQuLjMw
MjkxYjEyZTE3OGYzZDljMzE3MzI5NzkyZjI4Nzk4ZDdkNjc2YWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBA
IC0xNzg4LDkgKzE3ODgsNyBAQCBwbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rpb24uY3Bw
CiBwbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHAKIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5l
bC5jcHAKIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvRFNQS2VybmVsUHJvY2Vzc29yLmNwcAotcGxhdGZv
cm0vYXVkaW8vQXVkaW9GSUZPLmNwcAogcGxhdGZvcm0vYXVkaW8vQXVkaW9IYXJkd2FyZUxpc3Rl
bmVyLmNwcAotcGxhdGZvcm0vYXVkaW8vQXVkaW9QdWxsRklGTy5jcHAKIHBsYXRmb3JtL2F1ZGlv
L0F1ZGlvUmVzYW1wbGVyLmNwcAogcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXJLZXJuZWwu
Y3BwCiBwbGF0Zm9ybS9hdWRpby9BdWRpb1V0aWxpdGllcy5jcHAKQEAgLTE4MTQsNiArMTgxMiw3
IEBAIHBsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHAKIHBsYXRmb3JtL2F1
ZGlvL1Bhbm5lci5jcHAKIHBsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcAog
cGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAorcGxhdGZvcm0v
YXVkaW8vUHVzaFB1bGxGSUZPLmNwcAogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNwcAogcGxhdGZv
cm0vYXVkaW8vUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyLmNwcAogcGxhdGZvcm0vYXVkaW8vUmV2
ZXJiQ29udm9sdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDQ2MzdjZTQ4MmVkNDFjYzgyZTExNjQ3ZDZjY2NiNTA1ODZk
MGVlOTguLmJmMTdkNGY5MTVhODE2NzFiZjUxZGJkMGU4YTMxM2RlOTg1ZGZlMWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI1
MjYsNiArMjUyNiw3IEBACiAJCTgzQzU3OTVEMURBNUMzMDEwMDZGQUNBOCAvKiBTY3JvbGxUb09w
dGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgz
NTBDM0U3MURBNTlCNjIwMDM1NjQ0NiAvKiBTY3JvbGxUb09wdGlvbnMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4M0QzNUFFQzFDNzE4N0ZBMDBG
NzBENUEgLyogWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNEMzVBRUExQzcxODdFRDAwRjcwRDVBIC8qIFhN
TEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQuaCAqLzsgfTsKIAkJODNEMzVBRjIxQzcxOEQ5MDAwRjcw
RDVBIC8qIEpTWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNEMzVBRjAxQzcxOEQ4NDAwRjcwRDVBIC8qIEpT
WE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5oICovOyB9OworCQk4M0Q1MTFGNjI1MEMxQ0JGMDAy
RURDNTEgLyogUHVzaFB1bGxGSUZPLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4M0Q1MTFGNTI1MEMxQ0E4MDAyRURDNTEgLyogUHVzaFB1bGxGSUZPLmgg
Ki87IH07CiAJCTgzREI5RTBGMjREQTE5NDkwMDM3QjQ2OCAvKiBCaXF1YWRGaWx0ZXJUeXBlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0RCOUUwQzI0
REExOEI1MDAzN0I0NjggLyogQmlxdWFkRmlsdGVyVHlwZS5oICovOyB9OwogCQk4M0RCOUUxMDI0
REExOTU3MDAzN0I0NjggLyogQmlxdWFkRmlsdGVyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNEQjlFMEUyNERBMThCNjAwMzdCNDY4IC8q
IEJpcXVhZEZpbHRlck9wdGlvbnMuaCAqLzsgfTsKIAkJODNFMzU5QTIxQkIxMDMxRDAwMkNFQjk4
IC8qIEpTSFRNTFRpbWVFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4M0UzNTlBMDFCQjEwMzFEMDAyQ0VCOTggLyogSlNIVE1MVGltZUVsZW1l
bnQuaCAqLzsgfTsKQEAgLTEwNzA3LDYgKzEwNzA4LDggQEAKIAkJODNEMzVBRUIxQzcxODdFRDAw
RjcwRDVBIC8qIFhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4M0QzNUFFRjFDNzE4RDg0MDBGNzBENUEgLyogSlNYTUxIdHRwUmVxdWVzdEV2
ZW50VGFyZ2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTWE1M
SHR0cFJlcXVlc3RFdmVudFRhcmdldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTgzRDM1QUYwMUM3MThEODQwMEY3MEQ1QSAvKiBKU1hNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNYTUxIdHRwUmVxdWVzdEV2ZW50
VGFyZ2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzRDUxMUYzMjUwQzFDQTgw
MDJFREM1MSAvKiBQdXNoUHVsbEZJRk8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUHVzaFB1bGxGSUZPLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODNENTExRjUyNTBDMUNBODAwMkVEQzUxIC8qIFB1c2hQdWxsRklGTy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQdXNoUHVsbEZJRk8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODNEQjlFMEEyNERBMThCNDAwMzdCNDY4IC8qIEJpcXVhZEZpbHRlclR5cGUuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IEJpcXVhZEZpbHRlclR5cGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4M0RCOUUwQzI0REExOEI1MDAzN0I0NjggLyogQmlxdWFkRmlsdGVyVHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBCaXF1YWRGaWx0ZXJUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTgzREI5RTBEMjREQTE4QjUwMDM3QjQ2OCAvKiBCaXF1YWRGaWx0ZXJPcHRpb25zLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBCaXF1YWRGaWx0ZXJPcHRpb25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTMwMDMzLDYgKzMwMDM2LDggQEAKIAkJCQkwNzBFMDkxODE4NzVFRDkzMDAzQTFEM0MgLyogUGxh
dGZvcm1NZWRpYVNlc3Npb24uaCAqLywKIAkJCQlDREFFOEMwNzE3NDZCOTU3MDA1MzJENzggLyog
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCAqLywKIAkJCQlDREFFOEMwODE3NDZCOTU3
MDA1MzJENzggLyogUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmggKi8sCisJCQkJODNENTEx
RjMyNTBDMUNBODAwMkVEQzUxIC8qIFB1c2hQdWxsRklGTy5jcHAgKi8sCisJCQkJODNENTExRjUy
NTBDMUNBODAwMkVEQzUxIC8qIFB1c2hQdWxsRklGTy5oICovLAogCQkJCUZEMzE2MDZFMTJCMDI2
RjcwMEMxQTM1OSAvKiBSZXZlcmIuY3BwICovLAogCQkJCUZEMzE2MDZGMTJCMDI2RjcwMEMxQTM1
OSAvKiBSZXZlcmIuaCAqLywKIAkJCQlGRDMxNjA3MDEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJi
QWNjdW11bGF0aW9uQnVmZmVyLmNwcCAqLywKQEAgLTMzMjY1LDYgKzMzMjcwLDcgQEAKIAkJCQk1
NzMwM0JFQjIwMDk3RjQwMDAzNTU5NjUgLyogUHVibGljS2V5Q3JlZGVudGlhbFR5cGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTAwODFGRjAwMTZCMEEyRDMwMDhBQUE3QSAvKiBQdWJsaWNTdWZmaXgu
aCBpbiBIZWFkZXJzICovLAogCQkJCTEwRkIwODRCMTRFMTVDN0UwMEEzREI5OCAvKiBQdWJsaWNV
UkxNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk4M0Q1MTFGNjI1MEMxQ0JGMDAyRURDNTEg
LyogUHVzaFB1bGxGSUZPLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NTBBMEJDQTA4NUY2MDM5MDA3
MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNDMUY1OTQxRURG
NjlEMzAwNDEwRDI3IC8qIFF1YWxpZmllZE5hbWVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTE1RTMxRjQxRTBDQjBCNTAwNEIzNzFDIC8qIFF1aWNrTG9vay5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9GSUZPLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMGIzYWE0OTlmNjk4YmI0NDM3ZGJiOTZkZDcyMTU1MGJhMmNjNWZl
Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
MTQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1l
IG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0g
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShXRUJfQVVESU8pCi0KLSNpbmNs
dWRlICJBdWRpb0ZJRk8uaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1BdWRpb0ZJRk86OkF1
ZGlvRklGTyh1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgZmlmb0xlbmd0aCkKLSAg
ICA6IG1fZmlmb0F1ZGlvQnVzKEF1ZGlvQnVzOjpjcmVhdGUobnVtYmVyT2ZDaGFubmVscywgZmlm
b0xlbmd0aCkpCi0gICAgLCBtX2ZpZm9MZW5ndGgoZmlmb0xlbmd0aCkKLSAgICAsIG1fZnJhbWVz
SW5GaWZvKDApCi0gICAgLCBtX3JlYWRJbmRleCgwKQotICAgICwgbV93cml0ZUluZGV4KDApCi17
Ci19Ci0KLXZvaWQgQXVkaW9GSUZPOjpjb25zdW1lKEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwgc2l6
ZV90IGZyYW1lc1RvQ29uc3VtZSkKLXsKLSAgICBib29sIGlzR29vZCA9IGRlc3RpbmF0aW9uICYm
IChmcmFtZXNUb0NvbnN1bWUgPD0gbV9maWZvTGVuZ3RoKSAmJiAoZnJhbWVzVG9Db25zdW1lIDw9
IG1fZnJhbWVzSW5GaWZvKSAmJiAoZGVzdGluYXRpb24tPmxlbmd0aCgpID49IGZyYW1lc1RvQ29u
c3VtZSk7Ci0gICAgQVNTRVJUKGlzR29vZCk7Ci0gICAgaWYgKCFpc0dvb2QpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIC8vIENvcHkgdGhlIHJlcXVlc3RlZCBudW1iZXIgb2Ygc2FtcGxlcyB0byB0
aGUgZGVzdGluYXRpb24uCi0KLSAgICBzaXplX3QgcGFydDFMZW5ndGg7Ci0gICAgc2l6ZV90IHBh
cnQyTGVuZ3RoOwotICAgIGZpbmRXcmFwTGVuZ3RocyhtX3JlYWRJbmRleCwgZnJhbWVzVG9Db25z
dW1lLCBwYXJ0MUxlbmd0aCwgcGFydDJMZW5ndGgpOwotCi0gICAgc2l6ZV90IG51bWJlck9mQ2hh
bm5lbHMgPSBtX2ZpZm9BdWRpb0J1cy0+bnVtYmVyT2ZDaGFubmVscygpOwotCi0gICAgZm9yIChz
aXplX3QgY2hhbm5lbEluZGV4ID0gMDsgY2hhbm5lbEluZGV4IDwgbnVtYmVyT2ZDaGFubmVsczsg
KytjaGFubmVsSW5kZXgpIHsKLSAgICAgICAgZmxvYXQqIGRlc3RpbmF0aW9uRGF0YSA9IGRlc3Rp
bmF0aW9uLT5jaGFubmVsKGNoYW5uZWxJbmRleCktPm11dGFibGVEYXRhKCk7Ci0gICAgICAgIGNv
bnN0IGZsb2F0KiBzb3VyY2VEYXRhID0gbV9maWZvQXVkaW9CdXMtPmNoYW5uZWwoY2hhbm5lbElu
ZGV4KS0+ZGF0YSgpOwotCi0gICAgICAgIGJvb2wgaXNDb3B5R29vZCA9ICgobV9yZWFkSW5kZXgg
PCBtX2ZpZm9MZW5ndGgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAobV9yZWFkSW5k
ZXggKyBwYXJ0MUxlbmd0aCkgPD0gbV9maWZvTGVuZ3RoCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAmJiAocGFydDFMZW5ndGggPD0gZGVzdGluYXRpb24tPmxlbmd0aCgpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJiYgKHBhcnQxTGVuZ3RoICsgcGFydDJMZW5ndGgpIDw9IGRlc3Rp
bmF0aW9uLT5sZW5ndGgoKSk7Ci0gICAgICAgIEFTU0VSVChpc0NvcHlHb29kKTsKLSAgICAgICAg
aWYgKCFpc0NvcHlHb29kKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1lbWNweShk
ZXN0aW5hdGlvbkRhdGEsIHNvdXJjZURhdGEgKyBtX3JlYWRJbmRleCwgcGFydDFMZW5ndGggKiBz
aXplb2YoKnNvdXJjZURhdGEpKTsKLSAgICAgICAgLy8gSGFuZGxlIHdyYXAgYXJvdW5kIG9mIHRo
ZSBGSUZPLCBpZiBuZWVkZWQuCi0gICAgICAgIGlmIChwYXJ0Mkxlbmd0aCkKLSAgICAgICAgICAg
IG1lbWNweShkZXN0aW5hdGlvbkRhdGEgKyBwYXJ0MUxlbmd0aCwgc291cmNlRGF0YSwgcGFydDJM
ZW5ndGggKiBzaXplb2YoKnNvdXJjZURhdGEpKTsKLSAgICB9Ci0gICAgbV9yZWFkSW5kZXggPSB1
cGRhdGVJbmRleChtX3JlYWRJbmRleCwgZnJhbWVzVG9Db25zdW1lKTsKLSAgICBBU1NFUlQobV9m
cmFtZXNJbkZpZm8gPj0gZnJhbWVzVG9Db25zdW1lKTsKLSAgICBtX2ZyYW1lc0luRmlmbyAtPSBm
cmFtZXNUb0NvbnN1bWU7Ci19Ci0KLXZvaWQgQXVkaW9GSUZPOjpwdXNoKGNvbnN0IEF1ZGlvQnVz
KiBzb3VyY2VCdXMpCi17Ci0gICAgLy8gQ29weSB0aGUgc291cmNlQnVzIGludG8gdGhlIEZJRk8g
YnVmZmVyLgotCi0gICAgYm9vbCBpc0dvb2QgPSBzb3VyY2VCdXMgJiYgKG1fZnJhbWVzSW5GaWZv
ICsgc291cmNlQnVzLT5sZW5ndGgoKSA8PSBtX2ZpZm9MZW5ndGgpOwotICAgIGlmICghaXNHb29k
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBzaXplX3Qgc291cmNlTGVuZ3RoID0gc291cmNlQnVz
LT5sZW5ndGgoKTsKLSAgICBzaXplX3QgcGFydDFMZW5ndGg7Ci0gICAgc2l6ZV90IHBhcnQyTGVu
Z3RoOwotICAgIGZpbmRXcmFwTGVuZ3RocyhtX3dyaXRlSW5kZXgsIHNvdXJjZUxlbmd0aCwgcGFy
dDFMZW5ndGgsIHBhcnQyTGVuZ3RoKTsKLQotICAgIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzID0g
bV9maWZvQXVkaW9CdXMtPm51bWJlck9mQ2hhbm5lbHMoKTsKLQotICAgIGZvciAoc2l6ZV90IGNo
YW5uZWxJbmRleCA9IDA7IGNoYW5uZWxJbmRleCA8IG51bWJlck9mQ2hhbm5lbHM7ICsrY2hhbm5l
bEluZGV4KSB7Ci0gICAgICAgIGZsb2F0KiBkZXN0aW5hdGlvbiA9IG1fZmlmb0F1ZGlvQnVzLT5j
aGFubmVsKGNoYW5uZWxJbmRleCktPm11dGFibGVEYXRhKCk7Ci0gICAgICAgIGNvbnN0IGZsb2F0
KiBzb3VyY2UgPSBzb3VyY2VCdXMtPmNoYW5uZWwoY2hhbm5lbEluZGV4KS0+ZGF0YSgpOwotCi0g
ICAgICAgIGJvb2wgaXNDb3B5R29vZCA9ICgobV93cml0ZUluZGV4IDwgbV9maWZvTGVuZ3RoKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKG1fd3JpdGVJbmRleCArIHBhcnQxTGVuZ3Ro
KSA8PSBtX2ZpZm9MZW5ndGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHBhcnQyTGVu
Z3RoIDwgbV9maWZvTGVuZ3RoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBwYXJ0MUxl
bmd0aCArIHBhcnQyTGVuZ3RoIDw9IHNvdXJjZUxlbmd0aCk7Ci0gICAgICAgIEFTU0VSVChpc0Nv
cHlHb29kKTsKLSAgICAgICAgaWYgKCFpc0NvcHlHb29kKQotICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgIG1lbWNweShkZXN0aW5hdGlvbiArIG1fd3JpdGVJbmRleCwgc291cmNlLCBwYXJ0
MUxlbmd0aCAqIHNpemVvZigqZGVzdGluYXRpb24pKTsKLQotICAgICAgICAvLyBIYW5kbGUgd3Jh
cCBhcm91bmQgb2YgdGhlIEZJRk8sIGlmIG5lZWRlZC4KLSAgICAgICAgaWYgKHBhcnQyTGVuZ3Ro
KQotICAgICAgICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uLCBzb3VyY2UgKyBwYXJ0MUxlbmd0aCwg
cGFydDJMZW5ndGggKiBzaXplb2YoKmRlc3RpbmF0aW9uKSk7Ci0gICAgfQotICAgICAgICAKLSAg
ICBtX2ZyYW1lc0luRmlmbyArPSBzb3VyY2VMZW5ndGg7Ci0gICAgQVNTRVJUKG1fZnJhbWVzSW5G
aWZvIDw9IG1fZmlmb0xlbmd0aCk7Ci0gICAgbV93cml0ZUluZGV4ID0gdXBkYXRlSW5kZXgobV93
cml0ZUluZGV4LCBzb3VyY2VMZW5ndGgpOwotfQotCi12b2lkIEF1ZGlvRklGTzo6ZmluZFdyYXBM
ZW5ndGhzKHNpemVfdCBpbmRleCwgc2l6ZV90IHNpemUsIHNpemVfdCYgcGFydDFMZW5ndGgsIHNp
emVfdCYgcGFydDJMZW5ndGgpCi17Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJ
T04oaW5kZXggPCBtX2ZpZm9MZW5ndGggJiYgc2l6ZSA8PSBtX2ZpZm9MZW5ndGgpOwotICAgIGlm
IChpbmRleCA8IG1fZmlmb0xlbmd0aCAmJiBzaXplIDw9IG1fZmlmb0xlbmd0aCkgewotICAgICAg
ICBpZiAoaW5kZXggKyBzaXplID4gbV9maWZvTGVuZ3RoKSB7Ci0gICAgICAgICAgICAvLyBOZWVk
IHRvIHdyYXAuIEZpZ3VyZSBvdXQgdGhlIGxlbmd0aCBvZiBlYWNoIHBpZWNlLgotICAgICAgICAg
ICAgcGFydDFMZW5ndGggPSBtX2ZpZm9MZW5ndGggLSBpbmRleDsKLSAgICAgICAgICAgIHBhcnQy
TGVuZ3RoID0gc2l6ZSAtIHBhcnQxTGVuZ3RoOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgLy8gTm8gd3JhcCBuZWVkZWQuCi0gICAgICAgICAgICBwYXJ0MUxlbmd0aCA9IHNpemU7Ci0g
ICAgICAgICAgICBwYXJ0Mkxlbmd0aCA9IDA7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAg
ICAgICAvLyBJbnZhbGlkIHZhbHVlcyBmb3IgaW5kZXggb3Igc2l6ZS4gU2V0IHRoZSBwYXJ0IGxl
bmd0aHMgdG8gemVybyBzbyBub3RoaW5nIGlzIGNvcGllZC4KLSAgICAgICAgcGFydDFMZW5ndGgg
PSAwOwotICAgICAgICBwYXJ0Mkxlbmd0aCA9IDA7Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9GSUZPLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MGY0MzhkZDdkMGZhNTlmYjY0NGQ0ZGY1NzJmNTU5ZmQ2NjMwOGJkMy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb0ZJRk8uaAorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgQXVkaW9GSUZP
X2gKLSNkZWZpbmUgQXVkaW9GSUZPX2gKLQotI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQXVkaW9GSUZPIGZpbmFsIHsKLSAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICAvLyBDcmVhdGUgYSBGSUZPIGxhcmdlIGVub3Vn
aCB0byBob2xkIHxmaWZvTGVuZ3RofCBmcmFtZXMgb2YgZGF0YSBvZiB8bnVtYmVyT2ZDaGFubmVs
c3wgY2hhbm5lbHMuCi0gICAgQXVkaW9GSUZPKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNp
emVfdCBmaWZvTGVuZ3RoKTsKLQotICAgIC8vIFB1c2ggdGhlIGRhdGEgZnJvbSB0aGUgYnVzIGlu
dG8gdGhlIEZJRk8uCi0gICAgdm9pZCBwdXNoKGNvbnN0IEF1ZGlvQnVzKik7Ci0KLSAgICAvLyBD
b25zdW1lIHxmcmFtZXNUb0NvbnN1bWV8IGZyYW1lcyBvZiBkYXRhIGZyb20gdGhlIEZJRk8gYW5k
IHB1dCB0aGVtIGluIHxkZXN0aW5hdGlvbnwuIFRoZQotICAgIC8vIGNvcnJlc3BvbmRpbmcgZnJh
bWVzIGFyZSByZW1vdmVkIGZyb20gdGhlIEZJRk8uCi0gICAgdm9pZCBjb25zdW1lKEF1ZGlvQnVz
KiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1RvQ29uc3VtZSk7Ci0KLSAgICAvLyBOdW1iZXIg
b2YgZnJhbWVzIG9mIGRhdGEgdGhhdCBhcmUgY3VycmVudGx5IGluIHRoZSBGSUZPLgotICAgIHNp
emVfdCBmcmFtZXNJbkZpZm8oKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lc0luRmlmbzsgfQotCi1w
cml2YXRlOgotICAgIC8vIFVwZGF0ZSB0aGUgRklGTyBpbmRleCBieSB0aGUgc3RlcCwgd2l0aCBh
cHByb3ByaWF0ZSB3cmFwcGluZyBhcm91bmQgdGhlIGVuZHBvaW50LgotICAgIGludCB1cGRhdGVJ
bmRleChpbnQgaW5kZXgsIGludCBzdGVwKSB7IHJldHVybiAoaW5kZXggKyBzdGVwKSAlIG1fZmlm
b0xlbmd0aDsgfQotCi0gICAgdm9pZCBmaW5kV3JhcExlbmd0aHMoc2l6ZV90IGluZGV4LCBzaXpl
X3QgcHJvdmlkZXJTaXplLCBzaXplX3QmIHBhcnQxTGVuZ3RoLCBzaXplX3QmIHBhcnQyTGVuZ3Ro
KTsKLSAgICAKLSAgICAvLyBUaGUgRklGTyBpdHNlbGYuIEluIHJlYWxpdHksIHRoZSBGSUZPIGlz
IGEgY2lyY3VsYXIgYnVmZmVyLgotICAgIFJlZlB0cjxBdWRpb0J1cz4gbV9maWZvQXVkaW9CdXM7
Ci0KLSAgICAvLyBUaGUgdG90YWwgYXZhaWxhYmxlIHNwYWNlIGluIHRoZSBGSUZPLgotICAgIHNp
emVfdCBtX2ZpZm9MZW5ndGg7Ci0KLSAgICAvLyBUaGUgbnVtYmVyIG9mIGFjdHVhbCBlbGVtZW50
cyBpbiB0aGUgRklGTwotICAgIHNpemVfdCBtX2ZyYW1lc0luRmlmbzsKLQotICAgIC8vIFdoZXJl
IHRvIHN0YXJ0IHJlYWRpbmcgZnJvbSB0aGUgRklGTy4KLSAgICBzaXplX3QgbV9yZWFkSW5kZXg7
Ci0KLSAgICAvLyBXaGVyZSB0byBzdGFydCB3cml0aW5nIHRvIHRoZSBGSUZPLgotICAgIHNpemVf
dCBtX3dyaXRlSW5kZXg7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBBdWRpb0ZJRk8uaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9QdWxsRklGTy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1B1
bGxGSUZPLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmIxYTYyMjI2YjlmODE3
MmI3ZmM2MGRjMjIwMjA0NjA1OWIzNTg3YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxG
SUZPLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0
aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lm
IEVOQUJMRShXRUJfQVVESU8pCi0KLSNpbmNsdWRlICJBdWRpb1B1bGxGSUZPLmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotQXVkaW9QdWxsRklGTzo6QXVkaW9QdWxsRklGTyhBdWRpb1NvdXJj
ZVByb3ZpZGVyJiBhdWRpb1Byb3ZpZGVyLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXpl
X3QgZmlmb0xlbmd0aCwgc2l6ZV90IHByb3ZpZGVyU2l6ZSkKLSAgICA6IG1fcHJvdmlkZXIoYXVk
aW9Qcm92aWRlcikKLSAgICAsIG1fZmlmbyhudW1iZXJPZkNoYW5uZWxzLCBmaWZvTGVuZ3RoKQot
ICAgICwgbV9wcm92aWRlclNpemUocHJvdmlkZXJTaXplKQotICAgICwgbV90ZW1wQnVzKEF1ZGlv
QnVzOjpjcmVhdGUobnVtYmVyT2ZDaGFubmVscywgcHJvdmlkZXJTaXplKSkKLXsKLX0KLQotdm9p
ZCBBdWRpb1B1bGxGSUZPOjpjb25zdW1lKEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZy
YW1lc1RvQ29uc3VtZSkKLXsKLSAgICBpZiAoIWRlc3RpbmF0aW9uKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBpZiAoZnJhbWVzVG9Db25zdW1lID4gbV9maWZvLmZyYW1lc0luRmlmbygpKSB7Ci0g
ICAgICAgIC8vIFdlIGRvbid0IGhhdmUgZW5vdWdoIGRhdGEgaW4gdGhlIEZJRk8gdG8gZnVsZmls
bCB0aGUgcmVxdWVzdC4gQXNrIGZvciBtb3JlIGRhdGEuCi0gICAgICAgIGZpbGxCdWZmZXIoZnJh
bWVzVG9Db25zdW1lIC0gbV9maWZvLmZyYW1lc0luRmlmbygpKTsKLSAgICB9Ci0KLSAgICBtX2Zp
Zm8uY29uc3VtZShkZXN0aW5hdGlvbiwgZnJhbWVzVG9Db25zdW1lKTsKLX0KLQotdm9pZCBBdWRp
b1B1bGxGSUZPOjpmaWxsQnVmZmVyKHNpemVfdCBudW1iZXJPZkZyYW1lcykKLXsKLSAgICAvLyBL
ZWVwIGFza2luZyB0aGUgcHJvdmlkZXIgdG8gZ2l2ZSB1cyBkYXRhIHVudGlsIHdlIGhhdmUgcmVj
ZWl2ZWQgYXQgbGVhc3QgfG51bWJlck9mRnJhbWVzfCBvZgotICAgIC8vIGRhdGEuIFN0dWZmIHRo
ZSBkYXRhIGludG8gdGhlIEZJRk8uCi0gICAgc2l6ZV90IGZyYW1lc1Byb3ZpZGVkID0gMDsKLQot
ICAgIHdoaWxlIChmcmFtZXNQcm92aWRlZCA8IG51bWJlck9mRnJhbWVzKSB7Ci0gICAgICAgIG1f
cHJvdmlkZXIucHJvdmlkZUlucHV0KG1fdGVtcEJ1cy5nZXQoKSwgbV9wcm92aWRlclNpemUpOwot
Ci0gICAgICAgIG1fZmlmby5wdXNoKG1fdGVtcEJ1cy5nZXQoKSk7Ci0KLSAgICAgICAgZnJhbWVz
UHJvdmlkZWQgKz0gbV9wcm92aWRlclNpemU7Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9QdWxsRklGTy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9QdWxsRklGTy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBkNzQ4ZmE0MTM4NzM3OWRiMzk1YmVhZTY1Zjg4MmJhMjU4ZTlmYzI2Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0F1ZGlvUHVsbEZJRk8uaAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIElu
Yy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYg
QXVkaW9QdWxsRklGT19oCi0jZGVmaW5lIEF1ZGlvUHVsbEZJRk9faAotCi0jaW5jbHVkZSAiQXVk
aW9CdXMuaCIKLSNpbmNsdWRlICJBdWRpb0ZJRk8uaCIKLSNpbmNsdWRlICJBdWRpb1NvdXJjZVBy
b3ZpZGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gQSBGSUZPIChGaXJzdCBJbiBG
aXJzdCBPdXQpIGJ1ZmZlciB0byBoYW5kbGUgbWlzbWF0Y2hlcyBpbiBidWZmZXIgc2l6ZXMgYmV0
d2VlbiBhIHByb3ZpZGVyIGFuZAotLy8gcmVjZWl2ZXIuIFRoZSByZWNlaXZlciB3aWxsICJwdWxs
IiBkYXRhIGZyb20gdGhpcyBGSUZPLiBJZiBkYXRhIGlzIGFscmVhZHkgYXZhaWxhYmxlIGluIHRo
ZQotLy8gRklGTywgaXQgaXMgcHJvdmlkZWQgdG8gdGhlIHJlY2VpdmVyLiBJZiBpbnN1ZmZpY2ll
bnQgZGF0YSBpcyBhdmFpbGFibGUgdG8gc2F0aXNmeSB0aGUgcmVxdWVzdCwKLS8vIHRoZSBGSUZP
IHdpbGwgYXNrIHRoZSBwcm92aWRlciBmb3IgbW9yZSBkYXRhIHdoZW4gbmVjZXNzYXJ5IHRvIGZ1
bGZpbGwgYSByZXF1ZXN0LiBDb250cmFzdCB0aGlzCi0vLyB3aXRoIGEgInB1c2giIEZJRk8sIHdo
ZXJlIHRoZSBzZW5kZXIgcHVzaGVzIGRhdGEgdG8gdGhlIEZJRk8gd2hpY2ggd2lsbCBpdHNlbGYg
cHVzaCB0aGUgZGF0YSB0bwotLy8gdGhlIHJlY2VpdmVyIHdoZW4gdGhlIEZJRk8gaXMgZnVsbC4K
LWNsYXNzIEF1ZGlvUHVsbEZJRk8gZmluYWwgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwotcHVibGljOgotICAgIC8vIENyZWF0ZSBhIEZJRk8gdGhhdCBnZXRzIGRhdGEgZnJvbSB8cHJv
dmlkZXJ8LiBUaGUgRklGTyB3aWxsIGJlIGxhcmdlIGVub3VnaCB0byBob2xkCi0gICAgLy8gfGZp
Zm9MZW5ndGh8IGZyYW1lcyBvZiBkYXRhIG9mIHxudW1iZXJPZkNoYW5uZWxzfCBjaGFubmVscy4g
VGhlIEF1ZGlvU291cmNlUHJvdmlkZXIgd2lsbCBiZQotICAgIC8vIGFza2VkIHRvIHByb2R1Y2Ug
fHByb3ZpZGVyU2l6ZXwgZnJhbWVzIHdoZW4gdGhlIEZJRk8gbmVlZHMgbW9yZSBkYXRhLgotICAg
IEF1ZGlvUHVsbEZJRk8oQXVkaW9Tb3VyY2VQcm92aWRlciYgYXVkaW9Qcm92aWRlciwgdW5zaWdu
ZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IGZpZm9MZW5ndGgsIHNpemVfdCBwcm92aWRlclNp
emUpOwotCi0gICAgLy8gUmVhZCB8ZnJhbWVzVG9Db25zdW1lfCBmcmFtZXMgZnJvbSB0aGUgRklG
TyBpbnRvIHRoZSBkZXN0aW5hdGlvbi4gSWYgdGhlIEZJRk8gZG9lcyBub3QgaGF2ZQotICAgIC8v
IGVub3VnaCBkYXRhLCB3ZSBhc2sgdGhlIHxwcm92aWRlcnwgdG8gZ2V0IG1vcmUgZGF0YSB0byBm
dWxmaWxsIHRoZSByZXF1ZXN0LgotICAgIHZvaWQgY29uc3VtZShBdWRpb0J1cyogZGVzdGluYXRp
b24sIHNpemVfdCBmcmFtZXNUb0NvbnN1bWUpOwotCi1wcml2YXRlOgotICAgIC8vIEZpbGwgdGhl
IEZJRk8gYnVmZmVyIHdpdGggYXQgbGVhc3QgfG51bWJlck9mRnJhbWVzfCBtb3JlIGRhdGEuCi0g
ICAgdm9pZCBmaWxsQnVmZmVyKHNpemVfdCBudW1iZXJPZkZyYW1lcyk7Ci0KLSAgICAvLyBUaGUg
cHJvdmlkZXIgb2YgdGhlIGRhdGEgaW4gb3VyIEZJRk8uCi0gICAgQXVkaW9Tb3VyY2VQcm92aWRl
ciYgbV9wcm92aWRlcjsKLQotICAgIC8vIFRoZSBhY3R1YWwgRklGTwotICAgIEF1ZGlvRklGTyBt
X2ZpZm87Ci0KLSAgICAvLyBOdW1iZXIgb2YgZnJhbWVzIG9mIGRhdGEgdGhhdCB0aGUgcHJvdmlk
ZXIgd2lsbCBwcm9kdWNlIHBlciBjYWxsLgotICAgIHVuc2lnbmVkIGludCBtX3Byb3ZpZGVyU2l6
ZTsKLQotICAgIC8vIFRlbXBvcmFyeSB3b3Jrc3BhY2UgdG8gaG9sZCB0aGUgZGF0YSBmcm9tIHRo
ZSBwcm92aWRlci4KLSAgICBSZWZQdHI8QXVkaW9CdXM+IG1fdGVtcEJ1czsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEF1ZGlvUHVsbEZJRk8uaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5j
cHAKaW5kZXggNWU2MjY4ZDNiYjEzYjVmMjcxZDJlNmE4OTYwMjgwZTc1M2I5ZGE0ZC4uODRlZmFi
MTYzMWIxYTY2Y2Y2NTE5YzFhMmI2M2U5NjljMjZkZWYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuY3BwCkBAIC05
MiwxMyArOTIsMTMgQEAgcHJpdmF0ZToKICAgICBzaXplX3QgbV9mcmFtZXNUb1Byb2Nlc3MgeyAw
IH07IC8vIFVzZWQgdG8gdmVyaWZ5IHRoYXQgYWxsIGNoYW5uZWxzIGFzayBmb3IgdGhlIHNhbWUg
YW1vdW50LgogfTsKIAotTXVsdGlDaGFubmVsUmVzYW1wbGVyOjpNdWx0aUNoYW5uZWxSZXNhbXBs
ZXIoZG91YmxlIHNjYWxlRmFjdG9yLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKQorTXVsdGlD
aGFubmVsUmVzYW1wbGVyOjpNdWx0aUNoYW5uZWxSZXNhbXBsZXIoZG91YmxlIHNjYWxlRmFjdG9y
LCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBPcHRpb25hbDx1bnNpZ25lZD4gcmVxdWVzdEZy
YW1lcykKICAgICA6IG1fbnVtYmVyT2ZDaGFubmVscyhudW1iZXJPZkNoYW5uZWxzKQogICAgICwg
bV9jaGFubmVsUHJvdmlkZXIobWFrZVVuaXF1ZTxDaGFubmVsUHJvdmlkZXI+KG1fbnVtYmVyT2ZD
aGFubmVscykpCiB7CiAgICAgLy8gQ3JlYXRlIGVhY2ggY2hhbm5lbCdzIHJlc2FtcGxlci4KICAg
ICBmb3IgKHVuc2lnbmVkIGNoYW5uZWxJbmRleCA9IDA7IGNoYW5uZWxJbmRleCA8IG51bWJlck9m
Q2hhbm5lbHM7ICsrY2hhbm5lbEluZGV4KQotICAgICAgICBtX2tlcm5lbHMuYXBwZW5kKG1ha2VV
bmlxdWU8U2luY1Jlc2FtcGxlcj4oc2NhbGVGYWN0b3IpKTsKKyAgICAgICAgbV9rZXJuZWxzLmFw
cGVuZChtYWtlVW5pcXVlPFNpbmNSZXNhbXBsZXI+KHNjYWxlRmFjdG9yLCByZXF1ZXN0RnJhbWVz
KSk7CiB9CiAKIE11bHRpQ2hhbm5lbFJlc2FtcGxlcjo6fk11bHRpQ2hhbm5lbFJlc2FtcGxlcigp
ID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011
bHRpQ2hhbm5lbFJlc2FtcGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVs
dGlDaGFubmVsUmVzYW1wbGVyLmgKaW5kZXggYWM4MWJlYzRiZTBiNDBkMjg0MTc2OWFlOGFjYTA3
MTg2OGJhYjBjZi4uNzE2YmM2MDFlODc4ZTNmNzRmNzRlYTM0ZGNiZDFjNzk4YzRkZGNhOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1w
bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVz
YW1wbGVyLmgKQEAgLTQwLDcgKzQwLDggQEAgY2xhc3MgQXVkaW9CdXM7CiBjbGFzcyBNdWx0aUNo
YW5uZWxSZXNhbXBsZXIgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOiAgIAotICAgIGV4cGxpY2l0IE11bHRpQ2hhbm5lbFJlc2FtcGxlcihkb3VibGUgc2NhbGVG
YWN0b3IsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMpOworICAgIC8vIHJlcXVlc3RGcmFtZXMg
Y29uc3Ryb2xzIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgaW4gZnJhbWVzIHdoZW4gQXVkaW9Tb3Vy
Y2VQcm92aWRlcjo6cHJvdmlkZUlucHV0KCkgaXMgY2FsbGVkLgorICAgIGV4cGxpY2l0IE11bHRp
Q2hhbm5lbFJlc2FtcGxlcihkb3VibGUgc2NhbGVGYWN0b3IsIHVuc2lnbmVkIG51bWJlck9mQ2hh
bm5lbHMsIE9wdGlvbmFsPHVuc2lnbmVkPiByZXF1ZXN0RnJhbWVzID0gV1RGOjpudWxsb3B0KTsK
ICAgICB+TXVsdGlDaGFubmVsUmVzYW1wbGVyKCk7CiAKICAgICAvLyBQcm9jZXNzIGdpdmVuIEF1
ZGlvU291cmNlUHJvdmlkZXIgZm9yIHN0cmVhbWluZyBhcHBsaWNhdGlvbnMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QdXNoUHVsbEZJRk8uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUHVzaFB1bGxGSUZPLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZTZl
NDA2MDJmNjlkZGM3ZjJmYWFlOTUyM2RiNjcwYjJlMjg2Y2E4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUHVzaFB1bGxGSUZPLmNwcApAQCAtMCwwICsx
LDEyNyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE3IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlB1c2hQdWxsRklGTy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IHNpemVfdCBQ
dXNoUHVsbEZJRk86OmtNYXhGSUZPTGVuZ3RoID0gNjU1MzY7CisKK1B1c2hQdWxsRklGTzo6UHVz
aFB1bGxGSUZPKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBmaWZvTGVuZ3RoKQor
ICAgIDogbV9maWZvTGVuZ3RoKGZpZm9MZW5ndGgpCit7CisgICAgQVNTRVJUKG1fZmlmb0xlbmd0
aCA8PSBrTWF4RklGT0xlbmd0aCk7CisgICAgbV9maWZvQnVzID0gQXVkaW9CdXM6OmNyZWF0ZShu
dW1iZXJPZkNoYW5uZWxzLCBtX2ZpZm9MZW5ndGgpOworfQorCitQdXNoUHVsbEZJRk86On5QdXNo
UHVsbEZJRk8oKSA9IGRlZmF1bHQ7CisKKy8vIFB1c2ggdGhlIGRhdGEgZnJvbSB8aW5wdXRCdXN8
IHRvIEZJRk8uIFRoZSBzaXplIG9mIHB1c2ggaXMgZGV0ZXJtaW5lZCBieQorLy8gdGhlIGxlbmd0
aCBvZiB8aW5wdXRCdXN8Lgordm9pZCBQdXNoUHVsbEZJRk86OnB1c2goY29uc3QgQXVkaW9CdXMq
IGlucHV0QnVzKQoreworICAgIEFTU0VSVChpbnB1dEJ1cyk7CisgICAgQVNTRVJUKGlucHV0QnVz
LT5sZW5ndGgoKSA8PSBtX2ZpZm9MZW5ndGgpOworICAgIEFTU0VSVChtX2luZGV4V3JpdGUgPCBt
X2ZpZm9MZW5ndGgpOworCisgICAgY29uc3Qgc2l6ZV90IGlucHV0QnVzTGVuZ3RoID0gaW5wdXRC
dXMtPmxlbmd0aCgpOworICAgIGNvbnN0IHNpemVfdCByZW1haW5kZXIgPSBtX2ZpZm9MZW5ndGgg
LSBtX2luZGV4V3JpdGU7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9maWZvQnVz
LT5udW1iZXJPZkNoYW5uZWxzKCk7ICsraSkgeworICAgICAgICBmbG9hdCogZmlmb0J1c0NoYW5u
ZWwgPSBtX2ZpZm9CdXMtPmNoYW5uZWwoaSktPm11dGFibGVEYXRhKCk7CisgICAgICAgIGNvbnN0
IGZsb2F0KiBpbnB1dEJ1c0NoYW5uZWwgPSBpbnB1dEJ1cy0+Y2hhbm5lbChpKS0+ZGF0YSgpOwor
ICAgICAgICBpZiAocmVtYWluZGVyID49IGlucHV0QnVzTGVuZ3RoKSB7CisgICAgICAgICAgICAv
LyBUaGUgcmVtYWluZGVyIGlzIGJpZyBlbm91Z2ggZm9yIHRoZSBpbnB1dCBkYXRhLgorICAgICAg
ICAgICAgbWVtY3B5KGZpZm9CdXNDaGFubmVsICsgbV9pbmRleFdyaXRlLCBpbnB1dEJ1c0NoYW5u
ZWwsIGlucHV0QnVzTGVuZ3RoICogc2l6ZW9mKCpmaWZvQnVzQ2hhbm5lbCkpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgLy8gVGhlIGlucHV0IGRhdGEgb3ZlcmZsb3dzIHRoZSByZW1h
aW5kZXIgc2l6ZS4gV3JhcCBhcm91bmQgdGhlIGluZGV4LgorICAgICAgICAgICAgbWVtY3B5KGZp
Zm9CdXNDaGFubmVsICsgbV9pbmRleFdyaXRlLCBpbnB1dEJ1c0NoYW5uZWwsIHJlbWFpbmRlciAq
IHNpemVvZigqZmlmb0J1c0NoYW5uZWwpKTsKKyAgICAgICAgICAgIG1lbWNweShmaWZvQnVzQ2hh
bm5lbCwgaW5wdXRCdXNDaGFubmVsICsgcmVtYWluZGVyLCAoaW5wdXRCdXNMZW5ndGggLSByZW1h
aW5kZXIpICogc2l6ZW9mKCpmaWZvQnVzQ2hhbm5lbCkpOworICAgICAgICB9CisgICAgfQorCisg
ICAgLy8gVXBkYXRlIHRoZSB3cml0ZSBpbmRleDsgd3JhcCBpdCBhcm91bmQgaWYgbmVjZXNzYXJ5
LgorICAgIG1faW5kZXhXcml0ZSA9IChtX2luZGV4V3JpdGUgKyBpbnB1dEJ1c0xlbmd0aCkgJSBt
X2ZpZm9MZW5ndGg7CisKKyAgICAvLyBJbiBjYXNlIG9mIG92ZXJmbG93LCBtb3ZlIHRoZSB8aW5k
ZXhSZWFkfCB0byB0aGUgdXBkYXRlZCB8aW5kZXhXcml0ZXwgdG8KKyAgICAvLyBhdm9pZCByZWFk
aW5nIG92ZXJ3cml0dGVuIGZyYW1lcyBieSB0aGUgbmV4dCBwdWxsLgorICAgIGlmIChpbnB1dEJ1
c0xlbmd0aCA+IG1fZmlmb0xlbmd0aCAtIG1fZnJhbWVzQXZhaWxhYmxlKQorICAgICAgICBtX2lu
ZGV4UmVhZCA9IG1faW5kZXhXcml0ZTsKKworICAgIC8vIFVwZGF0ZSB0aGUgbnVtYmVyIG9mIGZy
YW1lcyBhdmFpbGFibGUgaW4gRklGTy4KKyAgICBtX2ZyYW1lc0F2YWlsYWJsZSA9IHN0ZDo6bWlu
KG1fZnJhbWVzQXZhaWxhYmxlICsgaW5wdXRCdXNMZW5ndGgsIG1fZmlmb0xlbmd0aCk7CisgICAg
QVNTRVJUKCgobV9pbmRleFJlYWQgKyBtX2ZyYW1lc0F2YWlsYWJsZSkgJSBtX2ZpZm9MZW5ndGgp
ID09IG1faW5kZXhXcml0ZSk7Cit9CisKKy8vIFB1bGwgdGhlIGRhdGEgb3V0IG9mIEZJRk8gdG8g
fG91dHB1dEJ1c3wuIElmIHJlbWFpbmluZyBmcmFtZSBpbiB0aGUgRklGTworLy8gaXMgbGVzcyB0
aGFuIHRoZSBmcmFtZXMgdG8gcHVsbCwgcHJvdmlkZXMgcmVtYWluaW5nIGZyYW1lIHBsdXMgdGhl
IHNpbGVuY2UuCitzaXplX3QgUHVzaFB1bGxGSUZPOjpwdWxsKEF1ZGlvQnVzKiBvdXRwdXRCdXMs
IHNpemVfdCBmcmFtZXNSZXF1ZXN0ZWQpCit7CisgICAgQVNTRVJUKG91dHB1dEJ1cyk7CisgICAg
QVNTRVJUKGZyYW1lc1JlcXVlc3RlZCA8PSBvdXRwdXRCdXMtPmxlbmd0aCgpKTsKKyAgICBBU1NF
UlQoZnJhbWVzUmVxdWVzdGVkIDw9IG1fZmlmb0xlbmd0aCk7CisgICAgQVNTRVJUKG1faW5kZXhS
ZWFkIDwgbV9maWZvTGVuZ3RoKTsKKworICAgIGNvbnN0IHNpemVfdCByZW1haW5kZXIgPSBtX2Zp
Zm9MZW5ndGggLSBtX2luZGV4UmVhZDsKKyAgICBjb25zdCBzaXplX3QgZnJhbWVzVG9GaWxsID0g
c3RkOjptaW4obV9mcmFtZXNBdmFpbGFibGUsIGZyYW1lc1JlcXVlc3RlZCk7CisKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9maWZvQnVzLT5udW1iZXJPZkNoYW5uZWxzKCk7ICsraSkg
eworICAgICAgICBjb25zdCBmbG9hdCogZmlmb0J1c0NoYW5uZWwgPSBtX2ZpZm9CdXMtPmNoYW5u
ZWwoaSktPmRhdGEoKTsKKyAgICAgICAgZmxvYXQqIG91dHB1dEJ1c0NoYW5uZWwgPSBvdXRwdXRC
dXMtPmNoYW5uZWwoaSktPm11dGFibGVEYXRhKCk7CisKKyAgICAgICAgLy8gRmlsbCB1cCB0aGUg
b3V0cHV0IGJ1cyB3aXRoIHRoZSBhdmFpbGFibGUgZnJhbWVzIGZpcnN0LgorICAgICAgICBpZiAo
cmVtYWluZGVyID49IGZyYW1lc1RvRmlsbCkgeworICAgICAgICAgICAgLy8gVGhlIHJlbWFpbmRl
ciBpcyBiaWcgZW5vdWdoIGZvciB0aGUgZnJhbWVzIHRvIHB1bGwuCisgICAgICAgICAgICBtZW1j
cHkob3V0cHV0QnVzQ2hhbm5lbCwgZmlmb0J1c0NoYW5uZWwgKyBtX2luZGV4UmVhZCwgZnJhbWVz
VG9GaWxsICogc2l6ZW9mKCpmaWZvQnVzQ2hhbm5lbCkpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgLy8gVGhlIGZyYW1lcyB0byBwdWxsIGlzIGJpZ2dlciB0aGFuIHRoZSByZW1haW5k
ZXIgc2l6ZS4KKyAgICAgICAgICAgIC8vIFdyYXAgYXJvdW5kIHRoZSBpbmRleC4KKyAgICAgICAg
ICAgIG1lbWNweShvdXRwdXRCdXNDaGFubmVsLCBmaWZvQnVzQ2hhbm5lbCArIG1faW5kZXhSZWFk
LCByZW1haW5kZXIgKiBzaXplb2YoKmZpZm9CdXNDaGFubmVsKSk7CisgICAgICAgICAgICBtZW1j
cHkob3V0cHV0QnVzQ2hhbm5lbCArIHJlbWFpbmRlciwgZmlmb0J1c0NoYW5uZWwsIChmcmFtZXNU
b0ZpbGwgLSByZW1haW5kZXIpICogc2l6ZW9mKCpmaWZvQnVzQ2hhbm5lbCkpOworICAgICAgICB9
CisKKyAgICAgICAgLy8gVGhlIGZyYW1lcyBhdmFpbGFibGUgd2FzIG5vdCBlbm91Z2ggdG8gZnVs
ZmlsbCB0aGUgcmVxdWVzdGVkIGZyYW1lcy4gRmlsbAorICAgICAgICAvLyB0aGUgcmVzdCBvZiB0
aGUgY2hhbm5lbCB3aXRoIHNpbGVuY2UuCisgICAgICAgIGlmIChmcmFtZXNSZXF1ZXN0ZWQgPiBm
cmFtZXNUb0ZpbGwpCisgICAgICAgICAgICBtZW1zZXQob3V0cHV0QnVzQ2hhbm5lbCArIGZyYW1l
c1RvRmlsbCwgMCwgKGZyYW1lc1JlcXVlc3RlZCAtIGZyYW1lc1RvRmlsbCkgKiBzaXplb2YoKm91
dHB1dEJ1c0NoYW5uZWwpKTsKKyAgICB9CisKKyAgICAvLyBVcGRhdGUgdGhlIHJlYWQgaW5kZXg7
IHdyYXAgaXQgYXJvdW5kIGlmIG5lY2Vzc2FyeS4KKyAgICBtX2luZGV4UmVhZCA9IChtX2luZGV4
UmVhZCArIGZyYW1lc1RvRmlsbCkgJSBtX2ZpZm9MZW5ndGg7CisKKyAgICAvLyBJbiBjYXNlIG9m
IHVuZGVyZmxvdywgbW92ZSB0aGUgfGluZGV4V3JpdGV8IHRvIHRoZSB1cGRhdGVkIHxpbmRleFJl
YWR8LgorICAgIGlmIChmcmFtZXNSZXF1ZXN0ZWQgPiBmcmFtZXNUb0ZpbGwpCisgICAgICAgIG1f
aW5kZXhXcml0ZSA9IG1faW5kZXhSZWFkOworCisgICAgLy8gVXBkYXRlIHRoZSBudW1iZXIgb2Yg
ZnJhbWVzIGluIEZJRk8uCisgICAgbV9mcmFtZXNBdmFpbGFibGUgLT0gZnJhbWVzVG9GaWxsOwor
ICAgIEFTU0VSVCgoKG1faW5kZXhSZWFkICsgbV9mcmFtZXNBdmFpbGFibGUpICUgbV9maWZvTGVu
Z3RoKSA9PSBtX2luZGV4V3JpdGUpOworCisgICAgLy8gfGZyYW1lc1JlcXVlc3RlZCA+IG1fZnJh
bWVzQXZhaWxhYmxlfCBtZWFucyB0aGUgZnJhbWVzIGluIEZJRk8gaXMgbm90CisgICAgLy8gZW5v
dWdoIHRvIGZ1bGZpbGwgdGhlIHJlcXVlc3RlZCBmcmFtZXMgZnJvbSB0aGUgYXVkaW8gZGV2aWNl
LgorICAgIHJldHVybiBmcmFtZXNSZXF1ZXN0ZWQgPiBtX2ZyYW1lc0F2YWlsYWJsZSA/IGZyYW1l
c1JlcXVlc3RlZCAtIG1fZnJhbWVzQXZhaWxhYmxlIDogMDsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUHVzaFB1
bGxGSUZPLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QdXNoUHVsbEZJRk8uaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wYTE0ZTFlMzFlNDYyY2ExYjMyNDUyOGNmMDdmZmU3ZmU2YjdmODQyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUHVzaFB1bGxGSUZP
LmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE3IFRoZSBDaHJvbWl1bSBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJBdWRpb0J1cy5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKKy8vIFB1c2hQdWxsRklGTyBjbGFzcyBpcyBhbiBpbnRlcm1lZGlhdGUgYXVk
aW8gc2FtcGxlIHN0b3JhZ2UgYmV0d2VlbgorLy8gV2ViS2l0LVdlYkF1ZGlvIGFuZCB0aGUgcmVu
ZGVyZXIuIFRoZSByZW5kZXJlcidzIGhhcmR3YXJlIGNhbGxiYWNrIGJ1ZmZlciBzaXplCisvLyB2
YXJpZXMgb24gdGhlIHBsYXRmb3JtLCBidXQgdGhlIFdlYkF1ZGlvIGFsd2F5cyByZW5kZXJzIDEy
OCBmcmFtZXMgKHJlbmRlcgorLy8gcXVhbnR1bSwgUlEpIHRodXMgRklGTyBpcyBuZWVkZWQgdG8g
aGFuZGxlIHRoZSBnZW5lcmFsIGNhc2UuCitjbGFzcyBQdXNoUHVsbEZJRk8geworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFB1c2hQdWxsRklG
Tyk7CisKK3B1YmxpYzoKKyAgICAvLyBNYXhpbXVtIEZJRk8gbGVuZ3RoLiAoNTEyIHJlbmRlciBx
dWFudGEpCisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBrTWF4RklGT0xlbmd0aDsKKworICAgIC8v
IHxmaWZvTGVuZ3RofCBjYW5ub3QgZXhjZWVkIHxrTWF4RklGT0xlbmd0aHwuIE90aGVyd2lzZSBp
dCBjcmFzaGVzLgorICAgIFB1c2hQdWxsRklGTyh1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBz
aXplX3QgZmlmb0xlbmd0aCk7CisgICAgflB1c2hQdWxsRklGTygpOworCisgICAgLy8gUHVzaGVz
IHRoZSByZW5kZXJlZCBmcmFtZXMgYnkgV2ViQXVkaW8gZW5naW5lLgorICAgIC8vICAtIFRoZSB8
aW5wdXRCdXN8IGxlbmd0aCBpcyAxMjggZnJhbWVzICgxIHJlbmRlciBxdWFudHVtKSwgZml4ZWQu
CisgICAgLy8gIC0gSW4gY2FzZSBvZiBvdmVyZmxvdyAoRklGTyBmdWxsIHdoaWxlIHB1c2gpLCB0
aGUgZXhpc3RpbmcgZnJhbWVzIGluIEZJRk8KKyAgICAvLyAgICB3aWxsIGJlIG92ZXJ3cml0dGVu
IGFuZCB8aW5kZXhSZWFkfCB3aWxsIGJlIGZvcmNpYmx5IG1vdmVkIHRvCisgICAgLy8gICAgfGlu
ZGV4V3JpdGV8IHRvIGF2b2lkIHJlYWRpbmcgb3ZlcndyaXR0ZW4gZnJhbWVzLgorICAgIHZvaWQg
cHVzaChjb25zdCBBdWRpb0J1cyogaW5wdXRCdXMpOworCisgICAgLy8gUHVsbHMgfGZyYW1lc1Jl
cXVlc3RlZHwgYnkgdGhlIGF1ZGlvIGRldmljZSB0aHJlYWQgYW5kIHJldHVybnMgdGhlIGFjdHVh
bAorICAgIC8vIG51bWJlciBvZiBmcmFtZXMgdG8gYmUgcmVuZGVyZWQgYnkgdGhlIHNvdXJjZS4g
KGkuZS4gV2ViQXVkaW8gZ3JhcGgpCisgICAgc2l6ZV90IHB1bGwoQXVkaW9CdXMqIG91dHB1dEJ1
cywgc2l6ZV90IGZyYW1lc1JlcXVlc3RlZCk7CisKKyAgICBzaXplX3QgZnJhbWVzQXZhaWxhYmxl
KCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZXNBdmFpbGFibGU7IH0KKyAgICBzaXplX3QgbGVuZ3Ro
KCkgY29uc3QgeyByZXR1cm4gbV9maWZvTGVuZ3RoOyB9CisgICAgdW5zaWduZWQgbnVtYmVyT2ZD
aGFubmVscygpIGNvbnN0IHsgcmV0dXJuIG1fZmlmb0J1cy0+bnVtYmVyT2ZDaGFubmVscygpOyB9
CisgICAgQXVkaW9CdXMqIGJ1cygpIGNvbnN0IHsgcmV0dXJuIG1fZmlmb0J1cy5nZXQoKTsgfQor
Citwcml2YXRlOgorICAgIC8vIFRoZSBzaXplIG9mIHRoZSBGSUZPLgorICAgIGNvbnN0IHNpemVf
dCBtX2ZpZm9MZW5ndGggPSAwOworCisgICAgUmVmUHRyPEF1ZGlvQnVzPiBtX2ZpZm9CdXM7CisK
KyAgICAvLyBUaGUgbnVtYmVyIG9mIGZyYW1lcyBpbiB0aGUgRklGTyBhY3R1YWxseSBhdmFpbGFi
bGUgZm9yIHB1bGxpbmcuCisgICAgc2l6ZV90IG1fZnJhbWVzQXZhaWxhYmxlIHsgMCB9OworCisg
ICAgc2l6ZV90IG1faW5kZXhSZWFkIHsgMCB9OworICAgIHNpemVfdCBtX2luZGV4V3JpdGUgeyAw
IH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmNwcAppbmRleCA1MjA1MjdiNTRiYTU3ODZk
OGNlYmRmYWI1M2E0NTY4YTkzZGU2ZWQ4Li4yNjUxYzQ4NzA5NTc0ZDk4MjNjZmRmZTY5ZTg1ZDcw
NjgyZWQwMzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5j
UmVzYW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVz
YW1wbGVyLmNwcApAQCAtMzksNTEgKzM5LDExMyBAQAogI2luY2x1ZGUgPGVtbWludHJpbi5oPgog
I2VuZGlmCiAKLS8vIElucHV0IGJ1ZmZlciBsYXlvdXQsIGRpdmlkaW5nIHRoZSB0b3RhbCBidWZm
ZXIgaW50byByZWdpb25zIChyMCAtIHI1KToKKy8vIEluaXRpYWwgaW5wdXQgYnVmZmVyIGxheW91
dCwgZGl2aWRpbmcgaW50byByZWdpb25zIHIwIHRvIHI0IChub3RlOiByMCwgcjMKKy8vIGFuZCBy
NCB3aWxsIG1vdmUgYWZ0ZXIgdGhlIGZpcnN0IGxvYWQpOgogLy8KIC8vIHwtLS0tLS0tLS0tLS0t
LS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLXwKIC8vCi0vLyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja1NpemUgKyBrZXJuZWxTaXplIC8gMiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIAorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbV9yZXF1ZXN0RnJhbWVzCiAvLyAgICAgICAgICAgICAgICAgICA8LS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0+Ci0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcjAKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHIwIChkdXJpbmcgZmlyc3QgbG9hZCkKIC8vCiAvLyAgIGtlcm5lbFNpemUgLyAy
ICAga2VybmVsU2l6ZSAvIDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXJuZWxT
aXplIC8gMiAgICAga2VybmVsU2l6ZSAvIDIgCiAvLyA8LS0tLS0tLS0tLS0tLS0tPiA8LS0tLS0t
LS0tLS0tLS0tPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwtLS0tLS0tLS0tLS0tLS0+
IDwtLS0tLS0tLS0tLS0tLS0+CiAvLyAgICAgICAgIHIxICAgICAgICAgICAgICAgIHIyICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcjMgICAgICAgICAgICAgICAg
cjQKIC8vIAotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YmxvY2tTaXplICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0vLyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+Ci0vLyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcjUKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX2Jsb2NrU2l6ZSA9PSByNCAtIHIyCisvLyAgICAgICAgICAgICAgICAgICA8LS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPgorLy8KKy8vICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3JlcXVlc3RGcmFtZXMKKy8vICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC0tLS0tLS0tLS0tLS0tLS0tLSAuLi4gLS0t
LS0tLS0tLS0tLS0tLS0+CisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcjAgKGR1cmluZyBzZWNvbmQgbG9hZCkKKy8vCisvLyBPbiB0aGUgc2Vjb25kIHJl
cXVlc3QgcjAgc2xpZGVzIHRvIHRoZSByaWdodCBieSBrZXJuZWxTaXplIC8gMiBhbmQgcjMsIHI0
CisvLyBhbmQgbV9ibG9ja1NpemUgYXJlIHJlaW5pdGlhbGl6ZWQgdmlhIHN0ZXAgKDMpIGluIHRo
ZSBhbGdvcml0aG0gYmVsb3cuCisvLworLy8gVGhlc2UgbmV3IHJlZ2lvbnMgcmVtYWluIGNvbnN0
YW50IHVudGlsIGEgRmx1c2goKSBvY2N1cnMuIFdoaWxlIGNvbXBsaWNhdGVkLAorLy8gdGhpcyBh
bGxvd3MgdXMgdG8gcmVkdWNlIGppdHRlciBieSBhbHdheXMgcmVxdWVzdGluZyB0aGUgc2FtZSBh
bW91bnQgZnJvbSB0aGUKKy8vIHByb3ZpZGVkIGNhbGxiYWNrLgogCiAvLyBUaGUgQWxnb3JpdGht
OgogLy8KLS8vIDEpIENvbnN1bWUgaW5wdXQgZnJhbWVzIGludG8gcjAgKHIxIGlzIHplcm8taW5p
dGlhbGl6ZWQpLgotLy8gMikgUG9zaXRpb24ga2VybmVsIGNlbnRlcmVkIGF0IHN0YXJ0IG9mIHIw
IChyMikgYW5kIGdlbmVyYXRlIG91dHB1dCBmcmFtZXMgdW50aWwga2VybmVsIGlzIGNlbnRlcmVk
IGF0IHN0YXJ0IG9mIHI0LgotLy8gICAgb3Igd2UndmUgZmluaXNoZWQgZ2VuZXJhdGluZyBhbGwg
dGhlIG91dHB1dCBmcmFtZXMuCi0vLyAzKSBDb3B5IHIzIHRvIHIxIGFuZCByNCB0byByMi4KLS8v
IDQpIENvbnN1bWUgaW5wdXQgZnJhbWVzIGludG8gcjUgKHplcm8tcGFkIGlmIHdlIHJ1biBvdXQg
b2YgaW5wdXQpLgotLy8gNSkgR290byAoMikgdW50aWwgYWxsIG9mIGlucHV0IGlzIGNvbnN1bWVk
LgorLy8gMSkgQWxsb2NhdGUgaW5wdXRfYnVmZmVyIG9mIHNpemU6IG1fcmVxdWVzdEZyYW1lcyAr
IGtlcm5lbFNpemU7IHRoaXMgZW5zdXJlcworLy8gICAgdGhlcmUncyBlbm91Z2ggcm9vbSB0byBy
ZWFkIG1fcmVxdWVzdEZyYW1lcyBmcm9tIHRoZSBjYWxsYmFjayBpbnRvIHJlZ2lvbgorLy8gICAg
cjAgKHdoaWNoIHdpbGwgbW92ZSBiZXR3ZWVuIHRoZSBmaXJzdCBhbmQgc3Vic2VxdWVudCBwYXNz
ZXMpLgorLy8KKy8vIDIpIExldCByMSwgcjIgZWFjaCByZXByZXNlbnQgaGFsZiB0aGUga2VybmVs
IGNlbnRlcmVkIGFyb3VuZCByMDoKKy8vCisvLyAgICAgICAgcjAgPSBtX2lucHV0QnVmZmVyICsg
a2VybmVsU2l6ZSAvIDIKKy8vICAgICAgICByMSA9IG1faW5wdXRCdWZmZXIKKy8vICAgICAgICBy
MiA9IHIwCisvLworLy8gICAgcjAgaXMgYWx3YXlzIG1fcmVxdWVzdEZyYW1lcyBpbiBzaXplLiBy
MSwgcjIgYXJlIGtlcm5lbFNpemUgLyAyIGluCisvLyAgICBzaXplLiByMSBtdXN0IGJlIHplcm8g
aW5pdGlhbGl6ZWQgdG8gYXZvaWQgY29udm9sdXRpb24gd2l0aCBnYXJiYWdlIChzZWUKKy8vICAg
IHN0ZXAgKDUpIGZvciB3aHkpLgorLy8KKy8vIDMpIExldCByMywgcjQgZWFjaCByZXByZXNlbnQg
aGFsZiB0aGUga2VybmVsIHJpZ2h0IGFsaWduZWQgd2l0aCB0aGUgZW5kIG9mCisvLyAgICByMCBh
bmQgY2hvb3NlIG1fYmxvY2tTaXplIGFzIHRoZSBkaXN0YW5jZSBpbiBmcmFtZXMgYmV0d2VlbiBy
NCBhbmQgcjI6CisvLworLy8gICAgICAgIHIzID0gcjAgKyBtX3JlcXVlc3RGcmFtZXMgLSBrZXJu
ZWxTaXplCisvLyAgICAgICAgcjQgPSByMCArIG1fcmVxdWVzdEZyYW1lcyAtIGtlcm5lbFNpemUg
LyAyCisvLyAgICAgICAgbV9ibG9ja1NpemUgPSByNCAtIHIyID0gbV9yZXF1ZXN0RnJhbWVzIC0g
a2VybmVsU2l6ZSAvIDIKKy8vCisvLyA0KSBDb25zdW1lIG1fcmVxdWVzdEZyYW1lcyBmcmFtZXMg
aW50byByMC4KKy8vCisvLyA1KSBQb3NpdGlvbiBrZXJuZWwgY2VudGVyZWQgYXQgc3RhcnQgb2Yg
cjIgYW5kIGdlbmVyYXRlIG91dHB1dCBmcmFtZXMgdW50aWwKKy8vICAgIHRoZSBrZXJuZWwgaXMg
Y2VudGVyZWQgYXQgdGhlIHN0YXJ0IG9mIHI0IG9yIHdlJ3ZlIGZpbmlzaGVkIGdlbmVyYXRpbmcK
Ky8vICAgIGFsbCB0aGUgb3V0cHV0IGZyYW1lcy4KKy8vCisvLyA2KSBXcmFwIGxlZnQgb3ZlciBk
YXRhIGZyb20gdGhlIHIzIHRvIHIxIGFuZCByNCB0byByMi4KKy8vCisvLyA3KSBJZiB3ZSdyZSBv
biB0aGUgc2Vjb25kIGxvYWQsIGluIG9yZGVyIHRvIGF2b2lkIG92ZXJ3cml0aW5nIHRoZSBmcmFt
ZXMgd2UKKy8vICAgIGp1c3Qgd3JhcHBlZCBmcm9tIHI0IHdlIG5lZWQgdG8gc2xpZGUgcjAgdG8g
dGhlIHJpZ2h0IGJ5IHRoZSBzaXplIG9mCisvLyAgICByNCwgd2hpY2ggaXMga2VybmVsU2l6ZSAv
IDI6CisvLworLy8gICAgICAgIHIwID0gcjAgKyBrZXJuZWxTaXplIC8gMiA9IG1faW5wdXRCdWZm
ZXIgKyBrZXJuZWxTaXplCisvLworLy8gICAgcjMsIHI0LCBhbmQgbV9ibG9ja1NpemUgdGhlbiBu
ZWVkIHRvIGJlIHJlaW5pdGlhbGl6ZWQsIHNvIGdvdG8gKDMpLgorLy8KKy8vIDgpIEVsc2UsIGlm
IHdlJ3JlIG5vdCBvbiB0aGUgc2Vjb25kIGxvYWQsIGdvdG8gKDQpLgogLy8KIC8vIG5vdGU6IHdl
J3JlIGdsb3NzaW5nIG92ZXIgaG93IHRoZSBzdWItc2FtcGxlIGhhbmRsaW5nIHdvcmtzIHdpdGgg
bV92aXJ0dWFsU291cmNlSW5kZXgsIGV0Yy4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaW5j
UmVzYW1wbGVyOjpTaW5jUmVzYW1wbGVyKGRvdWJsZSBzY2FsZUZhY3RvciwgdW5zaWduZWQga2Vy
bmVsU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZLZXJuZWxPZmZzZXRzKQorY29uc3RleHByIHVuc2ln
bmVkIGRlZmF1bHRSZXF1ZXN0RnJhbWVzIHsgNTEyIH07Citjb25zdGV4cHIgdW5zaWduZWQga2Vy
bmVsU2l6ZSB7IDMyIH07Citjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZLZXJuZWxPZmZzZXRz
IHsgMzIgfTsKKworU2luY1Jlc2FtcGxlcjo6U2luY1Jlc2FtcGxlcihkb3VibGUgc2NhbGVGYWN0
b3IsIE9wdGlvbmFsPHVuc2lnbmVkPiByZXF1ZXN0RnJhbWVzKQogICAgIDogbV9zY2FsZUZhY3Rv
cihzY2FsZUZhY3RvcikKLSAgICAsIG1fa2VybmVsU2l6ZShrZXJuZWxTaXplKQotICAgICwgbV9u
dW1iZXJPZktlcm5lbE9mZnNldHMobnVtYmVyT2ZLZXJuZWxPZmZzZXRzKQotICAgICwgbV9rZXJu
ZWxTdG9yYWdlKG1fa2VybmVsU2l6ZSAqIChtX251bWJlck9mS2VybmVsT2Zmc2V0cyArIDEpKQot
ICAgICwgbV92aXJ0dWFsU291cmNlSW5kZXgoMCkKLSAgICAsIG1fYmxvY2tTaXplKDUxMikKLSAg
ICAsIG1faW5wdXRCdWZmZXIobV9ibG9ja1NpemUgKyBtX2tlcm5lbFNpemUpIC8vIFNlZSBpbnB1
dCBidWZmZXIgbGF5b3V0IGFib3ZlLgotICAgICwgbV9zb3VyY2UoMCkKLSAgICAsIG1fc291cmNl
RnJhbWVzQXZhaWxhYmxlKDApCi0gICAgLCBtX3NvdXJjZVByb3ZpZGVyKDApCi0gICAgLCBtX2lz
QnVmZmVyUHJpbWVkKGZhbHNlKQorICAgICwgbV9rZXJuZWxTdG9yYWdlKGtlcm5lbFNpemUgKiAo
bnVtYmVyT2ZLZXJuZWxPZmZzZXRzICsgMSkpCisgICAgLCBtX3JlcXVlc3RGcmFtZXMocmVxdWVz
dEZyYW1lcy52YWx1ZU9yKGRlZmF1bHRSZXF1ZXN0RnJhbWVzKSkKKyAgICAsIG1faW5wdXRCdWZm
ZXIobV9yZXF1ZXN0RnJhbWVzICsga2VybmVsU2l6ZSkgLy8gU2VlIGlucHV0IGJ1ZmZlciBsYXlv
dXQgYWJvdmUuCisgICAgLCBtX3IxKG1faW5wdXRCdWZmZXIuZGF0YSgpKQorICAgICwgbV9yMiht
X2lucHV0QnVmZmVyLmRhdGEoKSArIGtlcm5lbFNpemUgLyAyKQogeworICAgIEFTU0VSVChtX3Jl
cXVlc3RGcmFtZXMgPiAwKTsKKyAgICB1cGRhdGVSZWdpb25zKGZhbHNlKTsKKyAgICBBU1NFUlQo
bV9ibG9ja1NpemUgPiBrZXJuZWxTaXplKTsKICAgICBpbml0aWFsaXplS2VybmVsKCk7CiB9CiAK
K3ZvaWQgU2luY1Jlc2FtcGxlcjo6dXBkYXRlUmVnaW9ucyhib29sIGlzU2Vjb25kTG9hZCkKK3sK
KyAgICAvLyBTZXR1cCB2YXJpb3VzIHJlZ2lvbiBwb2ludGVycyBpbiB0aGUgYnVmZmVyIChzZWUg
ZGlhZ3JhbSBhYm92ZSkuIElmIHdlJ3JlCisgICAgLy8gb24gdGhlIHNlY29uZCBsb2FkIHdlIG5l
ZWQgdG8gc2xpZGUgbV9yMCB0byB0aGUgcmlnaHQgYnkga2VybmVsU2l6ZSAvIDIuCisgICAgbV9y
MCA9IG1faW5wdXRCdWZmZXIuZGF0YSgpICsgKGlzU2Vjb25kTG9hZCA/IGtlcm5lbFNpemUgOiBr
ZXJuZWxTaXplIC8gMik7CisgICAgbV9yMyA9IG1fcjAgKyBtX3JlcXVlc3RGcmFtZXMgLSBrZXJu
ZWxTaXplOworICAgIG1fcjQgPSBtX3IwICsgbV9yZXF1ZXN0RnJhbWVzIC0ga2VybmVsU2l6ZSAv
IDI7CisgICAgbV9ibG9ja1NpemUgPSBtX3I0IC0gbV9yMjsKKworICAgIC8vIG1fcjEgYXQgdGhl
IGJlZ2lubmluZyBvZiB0aGUgYnVmZmVyLgorICAgIEFTU0VSVChtX3IxID09IG1faW5wdXRCdWZm
ZXIuZGF0YSgpKTsKKyAgICAvLyBtX3IxIGxlZnQgb2YgbV9yMiwgbV9yNCBsZWZ0IG9mIG1fcjMg
YW5kIHNpemUgY29ycmVjdC4KKyAgICBBU1NFUlQoKG1fcjIgLSBtX3IxKSA9PSAobV9yNCAtIG1f
cjMpKTsKKyAgICAvLyBtX3IyIGxlZnQgb2YgcjMuCisgICAgQVNTRVJUKG1fcjIgPD0gbV9yMyk7
Cit9CisKIHZvaWQgU2luY1Jlc2FtcGxlcjo6aW5pdGlhbGl6ZUtlcm5lbCgpCiB7CiAgICAgLy8g
QmxhY2ttYW4gd2luZG93IHBhcmFtZXRlcnMuCkBAIC05OCwxNiArMTYwLDE2IEBAIHZvaWQgU2lu
Y1Jlc2FtcGxlcjo6aW5pdGlhbGl6ZUtlcm5lbCgpCiAgICAgLy8gVGhlIHNpbmMgZnVuY3Rpb24g
aXMgYW4gaWRlYWxpemVkIGJyaWNrLXdhbGwgZmlsdGVyLCBidXQgc2luY2Ugd2UncmUgd2luZG93
aW5nIGl0IHRoZQogICAgIC8vIHRyYW5zaXRpb24gZnJvbSBwYXNzIHRvIHN0b3AgZG9lcyBub3Qg
aGFwcGVuIHJpZ2h0IGF3YXkuIFNvIHdlIHNob3VsZCBhZGp1c3QgdGhlCiAgICAgLy8gbG93cGFz
cyBmaWx0ZXIgY3V0b2ZmIHNsaWdodGx5IGRvd253YXJkIHRvIGF2b2lkIHNvbWUgYWxpYXNpbmcg
YXQgdGhlIHZlcnkgaGlnaC1lbmQuCi0gICAgLy8gRklYTUU6IHRoaXMgdmFsdWUgaXMgZW1waXJp
Y2FsIGFuZCB0byBiZSBtb3JlIGV4YWN0IHNob3VsZCB2YXJ5IGRlcGVuZGluZyBvbiBtX2tlcm5l
bFNpemUuCisgICAgLy8gRklYTUU6IHRoaXMgdmFsdWUgaXMgZW1waXJpY2FsIGFuZCB0byBiZSBt
b3JlIGV4YWN0IHNob3VsZCB2YXJ5IGRlcGVuZGluZyBvbiBrZXJuZWxTaXplLgogICAgIHNpbmNT
Y2FsZUZhY3RvciAqPSAwLjk7CiAKLSAgICBpbnQgbiA9IG1fa2VybmVsU2l6ZTsKKyAgICBpbnQg
biA9IGtlcm5lbFNpemU7CiAgICAgaW50IGhhbGZTaXplID0gbiAvIDI7CiAKICAgICAvLyBHZW5l
cmF0ZXMgYSBzZXQgb2Ygd2luZG93ZWQgc2luYygpIGtlcm5lbHMuCiAgICAgLy8gV2UgZ2VuZXJh
dGUgYSByYW5nZSBvZiBzdWItc2FtcGxlIG9mZnNldHMgZnJvbSAwLjAgdG8gMS4wLgotICAgIGZv
ciAodW5zaWduZWQgb2Zmc2V0SW5kZXggPSAwOyBvZmZzZXRJbmRleCA8PSBtX251bWJlck9mS2Vy
bmVsT2Zmc2V0czsgKytvZmZzZXRJbmRleCkgewotICAgICAgICBkb3VibGUgc3Vic2FtcGxlT2Zm
c2V0ID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihvZmZzZXRJbmRleCkgLyBtX251bWJlck9mS2VybmVs
T2Zmc2V0czsKKyAgICBmb3IgKHVuc2lnbmVkIG9mZnNldEluZGV4ID0gMDsgb2Zmc2V0SW5kZXgg
PD0gbnVtYmVyT2ZLZXJuZWxPZmZzZXRzOyArK29mZnNldEluZGV4KSB7CisgICAgICAgIGRvdWJs
ZSBzdWJzYW1wbGVPZmZzZXQgPSBzdGF0aWNfY2FzdDxkb3VibGU+KG9mZnNldEluZGV4KSAvIG51
bWJlck9mS2VybmVsT2Zmc2V0czsKIAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsr
aSkgewogICAgICAgICAgICAgLy8gQ29tcHV0ZSB0aGUgc2luYygpIHdpdGggb2Zmc2V0LgpAQCAt
MTIwLDcgKzE4Miw3IEBAIHZvaWQgU2luY1Jlc2FtcGxlcjo6aW5pdGlhbGl6ZUtlcm5lbCgpCiAg
ICAgICAgICAgICBkb3VibGUgd2luZG93ID0gYTAgLSBhMSAqIGNvcygyLjAgKiBwaURvdWJsZSAq
IHgpICsgYTIgKiBjb3MoNC4wICogcGlEb3VibGUgKiB4KTsKIAogICAgICAgICAgICAgLy8gV2lu
ZG93IHRoZSBzaW5jKCkgZnVuY3Rpb24gYW5kIHN0b3JlIGF0IHRoZSBjb3JyZWN0IG9mZnNldC4K
LSAgICAgICAgICAgIG1fa2VybmVsU3RvcmFnZVtpICsgb2Zmc2V0SW5kZXggKiBtX2tlcm5lbFNp
emVdID0gc2luYyAqIHdpbmRvdzsKKyAgICAgICAgICAgIG1fa2VybmVsU3RvcmFnZVtpICsgb2Zm
c2V0SW5kZXggKiBrZXJuZWxTaXplXSA9IHNpbmMgKiB3aW5kb3c7CiAgICAgICAgIH0KICAgICB9
CiB9CkBAIC0xOTAsNyArMjUyLDcgQEAgdm9pZCBTaW5jUmVzYW1wbGVyOjpwcm9jZXNzKGNvbnN0
IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgbnUKICAgICB1bnNp
Z25lZCByZW1haW5pbmcgPSBudW1iZXJPZkRlc3RpbmF0aW9uRnJhbWVzOwogICAgIAogICAgIHdo
aWxlIChyZW1haW5pbmcpIHsKLSAgICAgICAgdW5zaWduZWQgZnJhbWVzVGhpc1RpbWUgPSBzdGQ6
Om1pbihyZW1haW5pbmcsIG1fYmxvY2tTaXplKTsKKyAgICAgICAgdW5zaWduZWQgZnJhbWVzVGhp
c1RpbWUgPSBzdGQ6Om1pbihyZW1haW5pbmcsIG1fcmVxdWVzdEZyYW1lcyk7CiAgICAgICAgIHBy
b2Nlc3MoJnNvdXJjZVByb3ZpZGVyLCBkZXN0aW5hdGlvbiwgZnJhbWVzVGhpc1RpbWUpOwogICAg
ICAgICAKICAgICAgICAgZGVzdGluYXRpb24gKz0gZnJhbWVzVGhpc1RpbWU7CkBAIC0yMDAsMjcg
KzI2MiwxOCBAQCB2b2lkIFNpbmNSZXNhbXBsZXI6OnByb2Nlc3MoY29uc3QgZmxvYXQqIHNvdXJj
ZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBudQogCiB2b2lkIFNpbmNSZXNhbXBsZXI6
OnByb2Nlc3MoQXVkaW9Tb3VyY2VQcm92aWRlciogc291cmNlUHJvdmlkZXIsIGZsb2F0KiBkZXN0
aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKIHsKLSAgICBib29sIGlzR29vZCA9IHNv
dXJjZVByb3ZpZGVyICYmIG1fYmxvY2tTaXplID4gbV9rZXJuZWxTaXplICYmIG1faW5wdXRCdWZm
ZXIuc2l6ZSgpID49IG1fYmxvY2tTaXplICsgbV9rZXJuZWxTaXplICYmICEobV9rZXJuZWxTaXpl
ICUgMik7Ci0gICAgQVNTRVJUKGlzR29vZCk7Ci0gICAgaWYgKCFpc0dvb2QpCisgICAgQVNTRVJU
KHNvdXJjZVByb3ZpZGVyKTsKKyAgICBpZiAoIXNvdXJjZVByb3ZpZGVyKQogICAgICAgICByZXR1
cm47CiAgICAgCiAgICAgbV9zb3VyY2VQcm92aWRlciA9IHNvdXJjZVByb3ZpZGVyOwogCiAgICAg
dW5zaWduZWQgbnVtYmVyT2ZEZXN0aW5hdGlvbkZyYW1lcyA9IGZyYW1lc1RvUHJvY2VzczsKLSAg
ICAKLSAgICAvLyBTZXR1cCB2YXJpb3VzIHJlZ2lvbiBwb2ludGVycyBpbiB0aGUgYnVmZmVyIChz
ZWUgZGlhZ3JhbSBhYm92ZSkuCi0gICAgZmxvYXQqIHIwID0gbV9pbnB1dEJ1ZmZlci5kYXRhKCkg
KyBtX2tlcm5lbFNpemUgLyAyOwotICAgIGZsb2F0KiByMSA9IG1faW5wdXRCdWZmZXIuZGF0YSgp
OwotICAgIGZsb2F0KiByMiA9IHIwOwotICAgIGZsb2F0KiByMyA9IHIwICsgbV9ibG9ja1NpemUg
LSBtX2tlcm5lbFNpemUgLyAyOwotICAgIGZsb2F0KiByNCA9IHIwICsgbV9ibG9ja1NpemU7Ci0g
ICAgZmxvYXQqIHI1ID0gcjAgKyBtX2tlcm5lbFNpemUgLyAyOwogCiAgICAgLy8gU3RlcCAoMSkK
ICAgICAvLyBQcmltZSB0aGUgaW5wdXQgYnVmZmVyIGF0IHRoZSBzdGFydCBvZiB0aGUgaW5wdXQg
c3RyZWFtLgogICAgIGlmICghbV9pc0J1ZmZlclByaW1lZCkgewotICAgICAgICBjb25zdW1lU291
cmNlKHIwLCBtX2Jsb2NrU2l6ZSArIG1fa2VybmVsU2l6ZSAvIDIpOworICAgICAgICBjb25zdW1l
U291cmNlKG1fcjAsIG1fcmVxdWVzdEZyYW1lcyk7CiAgICAgICAgIG1faXNCdWZmZXJQcmltZWQg
PSB0cnVlOwogICAgIH0KICAgICAKQEAgLTIzMiwxNCArMjg1LDE0IEBAIHZvaWQgU2luY1Jlc2Ft
cGxlcjo6cHJvY2VzcyhBdWRpb1NvdXJjZVByb3ZpZGVyKiBzb3VyY2VQcm92aWRlciwgZmxvYXQq
IGRlc3RpbmF0CiAgICAgICAgICAgICBpbnQgc291cmNlSW5kZXhJID0gc3RhdGljX2Nhc3Q8aW50
PihtX3ZpcnR1YWxTb3VyY2VJbmRleCk7CiAgICAgICAgICAgICBkb3VibGUgc3Vic2FtcGxlUmVt
YWluZGVyID0gbV92aXJ0dWFsU291cmNlSW5kZXggLSBzb3VyY2VJbmRleEk7CiAKLSAgICAgICAg
ICAgIGRvdWJsZSB2aXJ0dWFsT2Zmc2V0SW5kZXggPSBzdWJzYW1wbGVSZW1haW5kZXIgKiBtX251
bWJlck9mS2VybmVsT2Zmc2V0czsKKyAgICAgICAgICAgIGRvdWJsZSB2aXJ0dWFsT2Zmc2V0SW5k
ZXggPSBzdWJzYW1wbGVSZW1haW5kZXIgKiBudW1iZXJPZktlcm5lbE9mZnNldHM7CiAgICAgICAg
ICAgICBpbnQgb2Zmc2V0SW5kZXggPSBzdGF0aWNfY2FzdDxpbnQ+KHZpcnR1YWxPZmZzZXRJbmRl
eCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGZsb2F0KiBrMSA9IG1fa2VybmVsU3RvcmFn
ZS5kYXRhKCkgKyBvZmZzZXRJbmRleCAqIG1fa2VybmVsU2l6ZTsKLSAgICAgICAgICAgIGZsb2F0
KiBrMiA9IGsxICsgbV9rZXJuZWxTaXplOworICAgICAgICAgICAgZmxvYXQqIGsxID0gbV9rZXJu
ZWxTdG9yYWdlLmRhdGEoKSArIG9mZnNldEluZGV4ICoga2VybmVsU2l6ZTsKKyAgICAgICAgICAg
IGZsb2F0KiBrMiA9IGsxICsga2VybmVsU2l6ZTsKIAogICAgICAgICAgICAgLy8gSW5pdGlhbGl6
ZSBpbnB1dCBwb2ludGVyIGJhc2VkIG9uIHF1YW50aXplZCBtX3ZpcnR1YWxTb3VyY2VJbmRleC4K
LSAgICAgICAgICAgIGZsb2F0KiBpbnB1dFAgPSByMSArIHNvdXJjZUluZGV4STsKKyAgICAgICAg
ICAgIGZsb2F0KiBpbnB1dFAgPSBtX3IxICsgc291cmNlSW5kZXhJOwogCiAgICAgICAgICAgICAv
LyBXZSdsbCBjb21wdXRlICJjb252b2x1dGlvbnMiIGZvciB0aGUgdHdvIGtlcm5lbHMgd2hpY2gg
c3RyYWRkbGUgbV92aXJ0dWFsU291cmNlSW5kZXgKICAgICAgICAgICAgIGZsb2F0IHN1bTEgPSAw
OwpAQCAtMjQ5LDcgKzMwMiw3IEBAIHZvaWQgU2luY1Jlc2FtcGxlcjo6cHJvY2VzcyhBdWRpb1Nv
dXJjZVByb3ZpZGVyKiBzb3VyY2VQcm92aWRlciwgZmxvYXQqIGRlc3RpbmF0CiAgICAgICAgICAg
ICBkb3VibGUga2VybmVsSW50ZXJwb2xhdGlvbkZhY3RvciA9IHZpcnR1YWxPZmZzZXRJbmRleCAt
IG9mZnNldEluZGV4OwogCiAgICAgICAgICAgICAvLyBHZW5lcmF0ZSBhIHNpbmdsZSBvdXRwdXQg
c2FtcGxlLiAKLSAgICAgICAgICAgIGludCBuID0gbV9rZXJuZWxTaXplOworICAgICAgICAgICAg
aW50IG4gPSBrZXJuZWxTaXplOwogCiAjZGVmaW5lIENPTlZPTFZFX09ORV9TQU1QTEUgICAgICBc
CiAgICAgICAgICAgICBpbnB1dCA9ICppbnB1dFArKzsgICBcCkBAIC00NTUsMTYgKzUwOCwyMCBA
QCB2b2lkIFNpbmNSZXNhbXBsZXI6OnByb2Nlc3MoQXVkaW9Tb3VyY2VQcm92aWRlciogc291cmNl
UHJvdmlkZXIsIGZsb2F0KiBkZXN0aW5hdAogICAgICAgICB9CiAKICAgICAgICAgLy8gV3JhcCBi
YWNrIGFyb3VuZCB0byB0aGUgc3RhcnQuCisgICAgICAgIEFTU0VSVChtX3ZpcnR1YWxTb3VyY2VJ
bmRleCA+PSBtX2Jsb2NrU2l6ZSk7CiAgICAgICAgIG1fdmlydHVhbFNvdXJjZUluZGV4IC09IG1f
YmxvY2tTaXplOwogCi0gICAgICAgIC8vIFN0ZXAgKDMpIENvcHkgcjMgdG8gcjEgYW5kIHI0IHRv
IHIyLgorICAgICAgICAvLyBTdGVwICgzKSBDb3B5IHIzIHRvIHIxLgogICAgICAgICAvLyBUaGlz
IHdyYXBzIHRoZSBsYXN0IGlucHV0IGZyYW1lcyBiYWNrIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVm
ZmVyLgotICAgICAgICBtZW1jcHkocjEsIHIzLCBzaXplb2YoZmxvYXQpICogKG1fa2VybmVsU2l6
ZSAvIDIpKTsKLSAgICAgICAgbWVtY3B5KHIyLCByNCwgc2l6ZW9mKGZsb2F0KSAqIChtX2tlcm5l
bFNpemUgLyAyKSk7CisgICAgICAgIG1lbWNweShtX3IxLCBtX3IzLCBzaXplb2YoZmxvYXQpICog
a2VybmVsU2l6ZSk7CisKKyAgICAgICAgLy8gU3RlcCAoNCkgLS0gUmVpbml0aWFsaXplIHJlZ2lv
bnMgaWYgbmVjZXNzYXJ5LgorICAgICAgICBpZiAobV9yMCA9PSBtX3IyKQorICAgICAgICAgICAg
dXBkYXRlUmVnaW9ucyh0cnVlKTsKIAotICAgICAgICAvLyBTdGVwICg0KQorICAgICAgICAvLyBT
dGVwICg1KQogICAgICAgICAvLyBSZWZyZXNoIHRoZSBidWZmZXIgd2l0aCBtb3JlIGlucHV0Lgot
ICAgICAgICBjb25zdW1lU291cmNlKHI1LCBtX2Jsb2NrU2l6ZSk7CisgICAgICAgIGNvbnN1bWVT
b3VyY2UobV9yMCwgbV9yZXF1ZXN0RnJhbWVzKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuaAppbmRleCBiMTZlYjUxMzI1ODhkYjVm
MWE5MTg1NTYwY2RlOTdkODFkYzRkYTI1Li45M2JmMDRkOTBmMDJiMjdjNzk1OWUxYjkzYjM2NzQy
ZGRmZDk3YzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5j
UmVzYW1wbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2Ft
cGxlci5oCkBAIC0zOSwxMSArMzksMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBT
aW5jUmVzYW1wbGVyIGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1Ymxp
YzogICAKK3B1YmxpYzoKICAgICAvLyBzY2FsZUZhY3RvciA9PSBzb3VyY2VTYW1wbGVSYXRlIC8g
ZGVzdGluYXRpb25TYW1wbGVSYXRlCi0gICAgLy8ga2VybmVsU2l6ZSBjYW4gYmUgYWRqdXN0ZWQg
Zm9yIHF1YWxpdHkgKGhpZ2hlciBpcyBiZXR0ZXIpCi0gICAgLy8gbnVtYmVyT2ZLZXJuZWxPZmZz
ZXRzIGlzIHVzZWQgZm9yIGludGVycG9sYXRpb24gYW5kIGlzIHRoZSBudW1iZXIgb2Ygc3ViLXNh
bXBsZSBrZXJuZWwgc2hpZnRzLgotICAgIFNpbmNSZXNhbXBsZXIoZG91YmxlIHNjYWxlRmFjdG9y
LCB1bnNpZ25lZCBrZXJuZWxTaXplID0gMzIsIHVuc2lnbmVkIG51bWJlck9mS2VybmVsT2Zmc2V0
cyA9IDMyKTsKKyAgICAvLyByZXF1ZXN0RnJhbWVzIGNvbnRyb2xzIHRoZSBzaXplIGluIGZyYW1l
cyBvZiB0aGUgYnVmZmVyIHJlcXVlc3RlZCBieSBlYWNoIHByb3ZpZGVJbnB1dCgpIGNhbGwuCisg
ICAgU2luY1Jlc2FtcGxlcihkb3VibGUgc2NhbGVGYWN0b3IsIE9wdGlvbmFsPHVuc2lnbmVkPiBy
ZXF1ZXN0RnJhbWVzID0gV1RGOjpudWxsb3B0KTsKICAgICAKICAgICAvLyBQcm9jZXNzZXMgbnVt
YmVyT2ZTb3VyY2VGcmFtZXMgZnJvbSBzb3VyY2UgdG8gcHJvZHVjZSBudW1iZXJPZlNvdXJjZUZy
YW1lcyAvIHNjYWxlRmFjdG9yIGZyYW1lcyBpbiBkZXN0aW5hdGlvbi4KICAgICB2b2lkIHByb2Nl
c3MoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBudW1i
ZXJPZlNvdXJjZUZyYW1lcyk7CkBAIC01NCwxMCArNTMsOSBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6
CiAgICAgdm9pZCBpbml0aWFsaXplS2VybmVsKCk7CiAgICAgdm9pZCBjb25zdW1lU291cmNlKGZs
b2F0KiBidWZmZXIsIHVuc2lnbmVkIG51bWJlck9mU291cmNlRnJhbWVzKTsKKyAgICB2b2lkIHVw
ZGF0ZVJlZ2lvbnMoYm9vbCBpc1NlY29uZExvYWQpOwogICAgIAogICAgIGRvdWJsZSBtX3NjYWxl
RmFjdG9yOwotICAgIHVuc2lnbmVkIG1fa2VybmVsU2l6ZTsKLSAgICB1bnNpZ25lZCBtX251bWJl
ck9mS2VybmVsT2Zmc2V0czsKIAogICAgIC8vIG1fa2VybmVsU3RvcmFnZSBoYXMgbV9udW1iZXJP
Zktlcm5lbE9mZnNldHMga2VybmVscyBiYWNrLXRvLWJhY2ssIGVhY2ggb2Ygc2l6ZSBtX2tlcm5l
bFNpemUuCiAgICAgLy8gVGhlIGtlcm5lbCBvZmZzZXRzIGFyZSBzdWItc2FtcGxlIHNoaWZ0cyBv
ZiBhIHdpbmRvd2VkIHNpbmMoKSBzaGlmdGVkIGZyb20gMC4wIHRvIDEuMCBzYW1wbGUuCkBAIC02
NSwyMiArNjMsMzMgQEAgcHJvdGVjdGVkOgogICAgIAogICAgIC8vIG1fdmlydHVhbFNvdXJjZUlu
ZGV4IGlzIGFuIGluZGV4IG9uIHRoZSBzb3VyY2UgaW5wdXQgYnVmZmVyIHdpdGggc3ViLXNhbXBs
ZSBwcmVjaXNpb24uCiAgICAgLy8gSXQgbXVzdCBiZSBkb3VibGUgcHJlY2lzaW9uIHRvIGF2b2lk
IGRyaWZ0LgotICAgIGRvdWJsZSBtX3ZpcnR1YWxTb3VyY2VJbmRleDsKKyAgICBkb3VibGUgbV92
aXJ0dWFsU291cmNlSW5kZXggeyAwIH07CiAgICAgCiAgICAgLy8gVGhpcyBpcyB0aGUgbnVtYmVy
IG9mIGRlc3RpbmF0aW9uIGZyYW1lcyB3ZSBnZW5lcmF0ZSBwZXIgcHJvY2Vzc2luZyBwYXNzIG9u
IHRoZSBidWZmZXIuCi0gICAgdW5zaWduZWQgbV9ibG9ja1NpemU7CisgICAgdW5zaWduZWQgbV9y
ZXF1ZXN0RnJhbWVzOworCisgICAgLy8gVGhlIG51bWJlciBvZiBzb3VyY2UgZnJhbWVzIHByb2Nl
c3NlZCBwZXIgcGFzcy4KKyAgICB1bnNpZ25lZCBtX2Jsb2NrU2l6ZSB7IDAgfTsKIAogICAgIC8v
IFNvdXJjZSBpcyBjb3BpZWQgaW50byB0aGlzIGJ1ZmZlciBmb3IgZWFjaCBwcm9jZXNzaW5nIHBh
c3MuCiAgICAgQXVkaW9GbG9hdEFycmF5IG1faW5wdXRCdWZmZXI7CiAKLSAgICBjb25zdCBmbG9h
dCogbV9zb3VyY2U7Ci0gICAgdW5zaWduZWQgbV9zb3VyY2VGcmFtZXNBdmFpbGFibGU7CisgICAg
Ly8gUG9pbnRlcnMgdG8gdGhlIHZhcmlvdXMgcmVnaW9ucyBpbnNpZGUgfG1faW5wdXRCdWZmZXJ8
LiBTZWUgdGhlIGRpYWdyYW0gYXQKKyAgICAvLyB0aGUgdG9wIG9mIHRoZSAuY3BwIGZpbGUgZm9y
IG1vcmUgaW5mb3JtYXRpb24uCisgICAgZmxvYXQqIG1fcjAgeyBudWxscHRyIH07CisgICAgZmxv
YXQqIGNvbnN0IG1fcjEgeyBudWxscHRyIH07CisgICAgZmxvYXQqIGNvbnN0IG1fcjIgeyBudWxs
cHRyIH07CisgICAgZmxvYXQqIG1fcjMgeyBudWxscHRyIH07CisgICAgZmxvYXQqIG1fcjQgeyBu
dWxscHRyIH07CisKKyAgICBjb25zdCBmbG9hdCogbV9zb3VyY2UgeyBudWxscHRyIH07CisgICAg
dW5zaWduZWQgbV9zb3VyY2VGcmFtZXNBdmFpbGFibGUgeyAwIH07CiAgICAgCiAgICAgLy8gbV9z
b3VyY2VQcm92aWRlciBpcyB1c2VkIHRvIHByb3ZpZGUgdGhlIGF1ZGlvIGlucHV0IHN0cmVhbSB0
byB0aGUgcmVzYW1wbGVyLgotICAgIEF1ZGlvU291cmNlUHJvdmlkZXIqIG1fc291cmNlUHJvdmlk
ZXI7ICAgIAorICAgIEF1ZGlvU291cmNlUHJvdmlkZXIqIG1fc291cmNlUHJvdmlkZXIgeyBudWxs
cHRyIH07CiAKICAgICAvLyBUaGUgYnVmZmVyIGlzIHByaW1lZCBvbmNlIGF0IHRoZSB2ZXJ5IGJl
Z2lubmluZyBvZiBwcm9jZXNzaW5nLgotICAgIGJvb2wgbV9pc0J1ZmZlclByaW1lZDsKKyAgICBi
b29sIG1faXNCdWZmZXJQcmltZWQgeyBmYWxzZSB9OwogCiAgICAgUmVmUHRyPEF1ZGlvQnVzPiBt
X2ludGVybmFsQnVzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCmluZGV4IGFlNjM1MGZj
MTFhNDY5NDc4ZTgwYzBiZmMzMzdjMjA4YjgzOTNlNGUuLjc3NWQ2MmRlOGFkZTc5OTgzN2I0MDVj
OWE0MTk2ODI1NGVmNWQyMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcApAQCAtMjksMTMg
KzI5LDE2IEBACiAjaWYgRU5BQkxFKFdFQl9BVURJTykKIAogI2luY2x1ZGUgIkF1ZGlvQnVzLmgi
Ci0jaW5jbHVkZSAiQXVkaW9JT0NhbGxiYWNrLmgiCiAjaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk11bHRpQ2hhbm5lbFJlc2FtcGxlci5o
IgorI2luY2x1ZGUgIlB1c2hQdWxsRklGTy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNv
bnN0IGludCBrUmVuZGVyQnVmZmVyU2l6ZSA9IDEyODsKK2NvbnN0ZXhwciBzaXplX3Qga1JlbmRl
ckJ1ZmZlclNpemUgPSAxMjg7CisKK2NvbnN0ZXhwciBzaXplX3QgZmlmb1NpemUgPSA5NiAqIGtS
ZW5kZXJCdWZmZXJTaXplOwogCiBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uQ29jb2FPdmVycmlkZSBB
dWRpb0Rlc3RpbmF0aW9uQ29jb2E6OmNyZWF0ZU92ZXJyaWRlID0gbnVsbHB0cjsKIApAQCAtNjgs
MTQgKzcxLDI0IEBAIHVuc2lnbmVkIGxvbmcgQXVkaW9EZXN0aW5hdGlvbjo6bWF4Q2hhbm5lbENv
dW50KCkKICAgICByZXR1cm4gQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkubWF4aW11bU51
bWJlck9mT3V0cHV0Q2hhbm5lbHMoKTsKIH0KIAorLy8gRklYTUU6IFdlIHNob3VsZCBub3QgYmUg
aGFyZGNvZGluZyB0aGUgbnVtYmVyIG9mIGlucHV0IGNoYW5uZWxzLgorY29uc3RleHByIHVuc2ln
bmVkIGxlZ2FjeU51bWJlck9mT3V0cHV0Q2hhbm5lbHMgeyAyIH07CisKIEF1ZGlvRGVzdGluYXRp
b25Db2NvYTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ss
IGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBtX291dHB1dFVuaXQoMCkKICAgICAsIG1fY2FsbGJh
Y2soY2FsbGJhY2spCi0gICAgLCBtX3JlbmRlckJ1cyhBdWRpb0J1czo6Y3JlYXRlKDIsIGtSZW5k
ZXJCdWZmZXJTaXplLCBmYWxzZSkucmVsZWFzZU5vbk51bGwoKSkKLSAgICAsIG1fc3BhcmVCdXMo
QXVkaW9CdXM6OmNyZWF0ZSgyLCBrUmVuZGVyQnVmZmVyU2l6ZSwgdHJ1ZSkucmVsZWFzZU5vbk51
bGwoKSkKLSAgICAsIG1fc2FtcGxlUmF0ZShzYW1wbGVSYXRlKQorICAgICwgbV9vdXRwdXRCdXMo
QXVkaW9CdXM6OmNyZWF0ZShsZWdhY3lOdW1iZXJPZk91dHB1dENoYW5uZWxzLCBrUmVuZGVyQnVm
ZmVyU2l6ZSwgZmFsc2UpLnJlbGVhc2VOb25OdWxsKCkpCisgICAgLCBtX3JlbmRlckJ1cyhBdWRp
b0J1czo6Y3JlYXRlKGxlZ2FjeU51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGtSZW5kZXJCdWZmZXJT
aXplKS5yZWxlYXNlTm9uTnVsbCgpKQorICAgICwgbV9maWZvKG1ha2VVbmlxdWVSZWY8UHVzaFB1
bGxGSUZPPihsZWdhY3lOdW1iZXJPZk91dHB1dENoYW5uZWxzLCBmaWZvU2l6ZSkpCisgICAgLCBt
X2NvbnRleHRTYW1wbGVSYXRlKHNhbXBsZVJhdGUpCiB7CiAgICAgY29uZmlndXJlKCk7CisKKyAg
ICBhdXRvIGhhcmR3YXJlU2FtcGxlUmF0ZSA9IHRoaXMtPmhhcmR3YXJlU2FtcGxlUmF0ZSgpOwor
ICAgIGlmIChzYW1wbGVSYXRlICE9IGhhcmR3YXJlU2FtcGxlUmF0ZSkgeworICAgICAgICBkb3Vi
bGUgc2NhbGVGYWN0b3IgPSBzdGF0aWNfY2FzdDxkb3VibGU+KHNhbXBsZVJhdGUpIC8gaGFyZHdh
cmVTYW1wbGVSYXRlOworICAgICAgICBtX3Jlc2FtcGxlciA9IG1ha2VVbmlxdWU8TXVsdGlDaGFu
bmVsUmVzYW1wbGVyPihzY2FsZUZhY3RvciwgbGVnYWN5TnVtYmVyT2ZPdXRwdXRDaGFubmVscywg
a1JlbmRlckJ1ZmZlclNpemUpOworICAgIH0KIH0KIAogQXVkaW9EZXN0aW5hdGlvbkNvY29hOjp+
QXVkaW9EZXN0aW5hdGlvbkNvY29hKCkKQEAgLTExNiwxMSArMTI5LDExIEBAIHZvaWQgQXVkaW9E
ZXN0aW5hdGlvbkNvY29hOjpzZXRJc1BsYXlpbmcoYm9vbCBpc1BsYXlpbmcpCiAgICAgbV9jYWxs
YmFjay5pc1BsYXlpbmdEaWRDaGFuZ2UoKTsKIH0KIAotdm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ29j
b2E6OnNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihBdWRpb1N0cmVhbUJhc2ljRGVzY3Jp
cHRpb24mIHN0cmVhbUZvcm1hdCwgZmxvYXQgc2FtcGxlUmF0ZSkKK3ZvaWQgQXVkaW9EZXN0aW5h
dGlvbkNvY29hOjpzZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oQXVkaW9TdHJlYW1CYXNp
Y0Rlc2NyaXB0aW9uJiBzdHJlYW1Gb3JtYXQpCiB7CiAgICAgY29uc3QgaW50IGJ5dGVzUGVyRmxv
YXQgPSBzaXplb2YoRmxvYXQzMik7CiAgICAgY29uc3QgaW50IGJpdHNQZXJCeXRlID0gODsKLSAg
ICBzdHJlYW1Gb3JtYXQubVNhbXBsZVJhdGUgPSBzYW1wbGVSYXRlOworICAgIHN0cmVhbUZvcm1h
dC5tU2FtcGxlUmF0ZSA9IGhhcmR3YXJlU2FtcGxlUmF0ZSgpOwogICAgIHN0cmVhbUZvcm1hdC5t
Rm9ybWF0SUQgPSBrQXVkaW9Gb3JtYXRMaW5lYXJQQ007CiAgICAgc3RyZWFtRm9ybWF0Lm1Gb3Jt
YXRGbGFncyA9IGtBdWRpb0Zvcm1hdEZsYWdzTmF0aXZlRmxvYXRQYWNrZWQgfCBrQXVkaW9Gb3Jt
YXRGbGFnSXNOb25JbnRlcmxlYXZlZDsKICAgICBzdHJlYW1Gb3JtYXQubUJ5dGVzUGVyUGFja2V0
ID0gYnl0ZXNQZXJGbG9hdDsKQEAgLTE0Myw0NCArMTU2LDMxIEBAIHN0YXRpYyB2b2lkIGFzc2ln
bkF1ZGlvQnVmZmVyc1RvQnVzKEF1ZGlvQnVmZmVyKiBidWZmZXJzLCBBdWRpb0J1cyYgYnVzLCBV
SW50MzIKIC8vIFB1bGxzIG9uIG91ciBwcm92aWRlciB0byBnZXQgcmVuZGVyZWQgYXVkaW8gc3Ry
ZWFtLgogT1NTdGF0dXMgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpyZW5kZXIoY29uc3QgQXVkaW9U
aW1lU3RhbXAqIHRpbWVzdGFtcCwgVUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxp
c3QqIGlvRGF0YSkKIHsKLSAgICBBdWRpb0lPUG9zaXRpb24gb3V0cHV0VGltZXN0YW1wOworICAg
IGlmIChtX2ZpZm8tPmxlbmd0aCgpIDwgbnVtYmVyT2ZGcmFtZXMpCisgICAgICAgIHJldHVybiBu
b0VycjsKKwogICAgIGlmICh0aW1lc3RhbXApIHsKLSAgICAgICAgb3V0cHV0VGltZXN0YW1wID0g
ewotICAgICAgICAgICAgU2Vjb25kcyB7IHRpbWVzdGFtcC0+bVNhbXBsZVRpbWUgLyBtX3NhbXBs
ZVJhdGUgfSwKKyAgICAgICAgbV9vdXRwdXRUaW1lc3RhbXAgPSB7CisgICAgICAgICAgICBTZWNv
bmRzIHsgdGltZXN0YW1wLT5tU2FtcGxlVGltZSAvIHNhbXBsZVJhdGUoKSB9LAogICAgICAgICAg
ICAgTW9ub3RvbmljVGltZTo6ZnJvbU1hY2hBYnNvbHV0ZVRpbWUodGltZXN0YW1wLT5tSG9zdFRp
bWUpCiAgICAgICAgIH07Ci0gICAgfQorICAgIH0gZWxzZQorICAgICAgICBtX291dHB1dFRpbWVz
dGFtcCA9IEF1ZGlvSU9Qb3NpdGlvbiB7IH07CisKICAgICBhdXRvKiBidWZmZXJzID0gaW9EYXRh
LT5tQnVmZmVyczsKICAgICBVSW50MzIgbnVtYmVyT2ZCdWZmZXJzID0gaW9EYXRhLT5tTnVtYmVy
QnVmZmVyczsKLSAgICBVSW50MzIgZnJhbWVzUmVtYWluaW5nID0gbnVtYmVyT2ZGcmFtZXM7Ci0g
ICAgVUludDMyIGZyYW1lT2Zmc2V0ID0gMDsKLSAgICB3aGlsZSAoZnJhbWVzUmVtYWluaW5nID4g
MCkgewotICAgICAgICBpZiAobV9zdGFydFNwYXJlRnJhbWUgPCBtX2VuZFNwYXJlRnJhbWUpIHsK
LSAgICAgICAgICAgIEFTU0VSVChtX3N0YXJ0U3BhcmVGcmFtZSA8IG1fZW5kU3BhcmVGcmFtZSk7
Ci0gICAgICAgICAgICBVSW50MzIgZnJhbWVzVGhpc1RpbWUgPSBzdGQ6Om1pbjxVSW50MzI+KG1f
ZW5kU3BhcmVGcmFtZSAtIG1fc3RhcnRTcGFyZUZyYW1lLCBudW1iZXJPZkZyYW1lcyk7Ci0gICAg
ICAgICAgICBhc3NpZ25BdWRpb0J1ZmZlcnNUb0J1cyhidWZmZXJzLCBtX3JlbmRlckJ1cy5nZXQo
KSwgbnVtYmVyT2ZCdWZmZXJzLCBudW1iZXJPZkZyYW1lcywgZnJhbWVPZmZzZXQsIGZyYW1lc1Ro
aXNUaW1lKTsKLSAgICAgICAgICAgIG1fcmVuZGVyQnVzLT5jb3B5RnJvbVJhbmdlKG1fc3BhcmVC
dXMuZ2V0KCksIG1fc3RhcnRTcGFyZUZyYW1lLCBtX2VuZFNwYXJlRnJhbWUpOwotICAgICAgICAg
ICAgcHJvY2Vzc0J1c0FmdGVyUmVuZGVyKG1fcmVuZGVyQnVzLmdldCgpLCBmcmFtZXNUaGlzVGlt
ZSk7Ci0gICAgICAgICAgICBmcmFtZU9mZnNldCArPSBmcmFtZXNUaGlzVGltZTsKLSAgICAgICAg
ICAgIGZyYW1lc1JlbWFpbmluZyAtPSBmcmFtZXNUaGlzVGltZTsKLSAgICAgICAgICAgIG1fc3Rh
cnRTcGFyZUZyYW1lICs9IGZyYW1lc1RoaXNUaW1lOwotICAgICAgICB9Ci0KLSAgICAgICAgVUlu
dDMyIGZyYW1lc1RoaXNUaW1lID0gc3RkOjptaW48VUludDMyPihrUmVuZGVyQnVmZmVyU2l6ZSwg
ZnJhbWVzUmVtYWluaW5nKTsKLSAgICAgICAgYXNzaWduQXVkaW9CdWZmZXJzVG9CdXMoYnVmZmVy
cywgbV9yZW5kZXJCdXMuZ2V0KCksIG51bWJlck9mQnVmZmVycywgbnVtYmVyT2ZGcmFtZXMsIGZy
YW1lT2Zmc2V0LCBmcmFtZXNUaGlzVGltZSk7Ci0KLSAgICAgICAgaWYgKCFmcmFtZXNUaGlzVGlt
ZSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAoZnJhbWVzVGhpc1RpbWUgPCBrUmVu
ZGVyQnVmZmVyU2l6ZSkgewotICAgICAgICAgICAgbV9jYWxsYmFjay5yZW5kZXIoMCwgbV9zcGFy
ZUJ1cy5wdHIoKSwga1JlbmRlckJ1ZmZlclNpemUsIG91dHB1dFRpbWVzdGFtcCk7Ci0gICAgICAg
ICAgICBtX3JlbmRlckJ1cy0+Y29weUZyb21SYW5nZShtX3NwYXJlQnVzLmdldCgpLCAwLCBmcmFt
ZXNUaGlzVGltZSk7Ci0gICAgICAgICAgICBtX3N0YXJ0U3BhcmVGcmFtZSA9IGZyYW1lc1RoaXNU
aW1lOwotICAgICAgICAgICAgbV9lbmRTcGFyZUZyYW1lID0ga1JlbmRlckJ1ZmZlclNpemU7Ci0g
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbV9jYWxsYmFjay5yZW5kZXIoMCwgbV9yZW5kZXJC
dXMucHRyKCksIGZyYW1lc1RoaXNUaW1lLCBvdXRwdXRUaW1lc3RhbXApOwotICAgICAgICBwcm9j
ZXNzQnVzQWZ0ZXJSZW5kZXIobV9yZW5kZXJCdXMuZ2V0KCksIGZyYW1lc1RoaXNUaW1lKTsKLSAg
ICAgICAgZnJhbWVPZmZzZXQgKz0gZnJhbWVzVGhpc1RpbWU7Ci0gICAgICAgIGZyYW1lc1JlbWFp
bmluZyAtPSBmcmFtZXNUaGlzVGltZTsKKworICAgIC8vIEFzc29jaWF0ZSB0aGUgZGVzdGluYXRp
b24gZGF0YSBhcnJheSB3aXRoIHRoZSBvdXRwdXQgYnVzIHRoZW4gZmlsbCB0aGUgRklGTy4KKyAg
ICBhc3NpZ25BdWRpb0J1ZmZlcnNUb0J1cyhidWZmZXJzLCBtX291dHB1dEJ1cy5nZXQoKSwgbnVt
YmVyT2ZCdWZmZXJzLCBudW1iZXJPZkZyYW1lcywgMCwgbnVtYmVyT2ZGcmFtZXMpOworICAgIHNp
emVfdCBmcmFtZXNUb1JlbmRlciA9IG1fZmlmby0+cHVsbChtX291dHB1dEJ1cy5wdHIoKSwgbnVt
YmVyT2ZGcmFtZXMpOworCisgICAgZm9yIChzaXplX3QgcHVzaGVkRnJhbWVzID0gMDsgcHVzaGVk
RnJhbWVzIDwgZnJhbWVzVG9SZW5kZXI7IHB1c2hlZEZyYW1lcyArPSBrUmVuZGVyQnVmZmVyU2l6
ZSkgeworICAgICAgICBpZiAobV9yZXNhbXBsZXIpCisgICAgICAgICAgICBtX3Jlc2FtcGxlci0+
cHJvY2Vzcyh0aGlzLCBtX3JlbmRlckJ1cy5wdHIoKSwga1JlbmRlckJ1ZmZlclNpemUpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBtX2NhbGxiYWNrLnJlbmRlcigwLCBtX3JlbmRlckJ1cy5w
dHIoKSwga1JlbmRlckJ1ZmZlclNpemUsIG1fb3V0cHV0VGltZXN0YW1wKTsKKworICAgICAgICBt
X2ZpZm8tPnB1c2gobV9yZW5kZXJCdXMucHRyKCkpOwogICAgIH0KIAogICAgIHJldHVybiBub0Vy
cjsKQEAgLTE5Myw2ICsxOTMsMTIgQEAgT1NTdGF0dXMgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpp
bnB1dFByb2Modm9pZCogdXNlckRhdGEsIEF1ZGlvVW5pdFJlbmRlckFjdGlvbkYKICAgICByZXR1
cm4gYXVkaW9PdXRwdXQtPnJlbmRlcih0aW1lc3RhbXAsIG51bWJlck9mRnJhbWVzLCBpb0RhdGEp
OwogfQogCit2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6cHJvdmlkZUlucHV0KEF1ZGlvQnVz
KiBidXMsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCit7CisgICAgQVNTRVJUX1VOVVNFRChmcmFt
ZXNUb1Byb2Nlc3MsIGZyYW1lc1RvUHJvY2VzcyA9PSBrUmVuZGVyQnVmZmVyU2l6ZSk7CisgICAg
bV9jYWxsYmFjay5yZW5kZXIoMCwgYnVzLCBrUmVuZGVyQnVmZmVyU2l6ZSwgbV9vdXRwdXRUaW1l
c3RhbXApOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUo
V0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29j
b2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaAppbmRleCAzOTI4OGVhOWZiMzI0YmJhMzFk
MTdjMjM2MDhlMTE1Y2FjYzAzMWFlLi5hZmI2MzA5Mjc2NTYwMDRlOGVhOTUxY2YxMzZhMTMwNzc0
ZTIzNTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9B
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaApAQCAtMjgsMTcgKzI4LDIyIEBACiAjaWYg
RU5BQkxFKFdFQl9BVURJTykKIAogI2luY2x1ZGUgIkF1ZGlvRGVzdGluYXRpb24uaCIKKyNpbmNs
dWRlICJBdWRpb0lPQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJBdWRpb1NvdXJjZVByb3ZpZGVyLmgi
CiAjaW5jbHVkZSA8QXVkaW9Vbml0L0F1ZGlvVW5pdC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQXVkaW9CdXM7CitjbGFzcyBNdWx0aUNoYW5uZWxSZXNhbXBsZXI7CitjbGFzcyBQdXNo
UHVsbEZJRk87CiAKIHVzaW5nIENyZWF0ZUF1ZGlvRGVzdGluYXRpb25Db2NvYU92ZXJyaWRlID0g
c3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVzdGluYXRpb24+KCopKEF1ZGlvSU9DYWxsYmFjayYsIGZs
b2F0IHNhbXBsZVJhdGUpOwogCiAvLyBBbiBBdWRpb0Rlc3RpbmF0aW9uIHVzaW5nIENvcmVBdWRp
bydzIGRlZmF1bHQgb3V0cHV0IEF1ZGlvVW5pdAotY2xhc3MgQXVkaW9EZXN0aW5hdGlvbkNvY29h
IDogcHVibGljIEF1ZGlvRGVzdGluYXRpb24geworY2xhc3MgQXVkaW9EZXN0aW5hdGlvbkNvY29h
IDogcHVibGljIEF1ZGlvRGVzdGluYXRpb24sIHB1YmxpYyBBdWRpb1NvdXJjZVByb3ZpZGVyIHsK
IHB1YmxpYzoKICAgICBBdWRpb0Rlc3RpbmF0aW9uQ29jb2EoQXVkaW9JT0NhbGxiYWNrJiwgZmxv
YXQgc2FtcGxlUmF0ZSk7CiAgICAgdmlydHVhbCB+QXVkaW9EZXN0aW5hdGlvbkNvY29hKCk7CkBA
IC00OSwxNCArNTQsMTQgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc2V0SXNQbGF5aW5nKGJvb2wp
OwogCiAgICAgYm9vbCBpc1BsYXlpbmcoKSBmaW5hbCB7IHJldHVybiBtX2lzUGxheWluZzsgfQot
ICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3NhbXBsZVJhdGU7
IH0KKyAgICBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb250ZXh0
U2FtcGxlUmF0ZTsgfQogICAgIHVuc2lnbmVkIGZyYW1lc1BlckJ1ZmZlcigpIGNvbnN0IGZpbmFs
OwogICAgIEF1ZGlvVW5pdCYgb3V0cHV0VW5pdCgpIHsgcmV0dXJuIG1fb3V0cHV0VW5pdDsgfQog
ICAgIAogICAgIC8vIERlZmF1bHRPdXRwdXRVbml0IGNhbGxiYWNrCiAgICAgc3RhdGljIE9TU3Rh
dHVzIGlucHV0UHJvYyh2b2lkKiB1c2VyRGF0YSwgQXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3Mq
LCBjb25zdCBBdWRpb1RpbWVTdGFtcCosIFVJbnQzMiBidXNOdW1iZXIsIFVJbnQzMiBudW1iZXJP
ZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpOwogCi0gICAgdm9pZCBzZXRBdWRpb1N0
cmVhbUJhc2ljRGVzY3JpcHRpb24oQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiwgZmxvYXQg
c2FtcGxlUmF0ZSk7CisgICAgdm9pZCBzZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oQXVk
aW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydCgp
IG92ZXJyaWRlOwpAQCAtNjQsNiArNjksOSBAQCBwcml2YXRlOgogCiAgICAgZnJpZW5kIHN0ZDo6
dW5pcXVlX3B0cjxBdWRpb0Rlc3RpbmF0aW9uPiBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoQXVk
aW9JT0NhbGxiYWNrJiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQsIHVuc2lnbmVkLCBmbG9hdCk7
CiAgICAgCisgICAgLy8gQXVkaW9Tb3VyY2VQcm92aWRlci4KKyAgICB2b2lkIHByb3ZpZGVJbnB1
dChBdWRpb0J1cyosIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIGZpbmFsOworCiAgICAgdm9pZCBj
b25maWd1cmUoKTsKICAgICB2b2lkIHByb2Nlc3NCdXNBZnRlclJlbmRlcihBdWRpb0J1cyYsIFVJ
bnQzMiBudW1iZXJPZkZyYW1lcyk7CiAKQEAgLTcxLDE0ICs3OSwyMiBAQCBwcml2YXRlOgogCiAg
ICAgQXVkaW9Vbml0IG1fb3V0cHV0VW5pdDsKICAgICBBdWRpb0lPQ2FsbGJhY2smIG1fY2FsbGJh
Y2s7CisKKyAgICAvLyBUbyBwYXNzIHRoZSBkYXRhIGZyb20gRklGTyB0byB0aGUgYXVkaW8gZGV2
aWNlIGNhbGxiYWNrLgorICAgIFJlZjxBdWRpb0J1cz4gbV9vdXRwdXRCdXM7CisKKyAgICAvLyBU
byBwdXNoIHRoZSByZW5kZXJlZCByZXN1bHQgZnJvbSBXZWJBdWRpbyBncmFwaCBpbnRvIHRoZSBG
SUZPLgogICAgIFJlZjxBdWRpb0J1cz4gbV9yZW5kZXJCdXM7Ci0gICAgUmVmPEF1ZGlvQnVzPiBt
X3NwYXJlQnVzOwogCi0gICAgZmxvYXQgbV9zYW1wbGVSYXRlOwotICAgIGJvb2wgbV9pc1BsYXlp
bmcgeyBmYWxzZSB9OworICAgIC8vIFJlc29sdmVzIHRoZSBidWZmZXIgc2l6ZSBtaXNtYXRjaCBi
ZXR3ZWVuIHRoZSBXZWJBdWRpbyBlbmdpbmUgYW5kCisgICAgLy8gdGhlIGNhbGxiYWNrIGZ1bmN0
aW9uIGZyb20gdGhlIGFjdHVhbCBhdWRpbyBkZXZpY2UuCisgICAgVW5pcXVlUmVmPFB1c2hQdWxs
RklGTz4gbV9maWZvOworCisgICAgc3RkOjp1bmlxdWVfcHRyPE11bHRpQ2hhbm5lbFJlc2FtcGxl
cj4gbV9yZXNhbXBsZXI7CisgICAgQXVkaW9JT1Bvc2l0aW9uIG1fb3V0cHV0VGltZXN0YW1wOwog
Ci0gICAgdW5zaWduZWQgbV9zdGFydFNwYXJlRnJhbWUgeyAwIH07Ci0gICAgdW5zaWduZWQgbV9l
bmRTcGFyZUZyYW1lIHsgMCB9OworICAgIGZsb2F0IG1fY29udGV4dFNhbXBsZVJhdGU7CisgICAg
Ym9vbCBtX2lzUGxheWluZyB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0
aW5hdGlvbklPUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9E
ZXN0aW5hdGlvbklPUy5jcHAKaW5kZXggMzkyOTUyMzZlMzAzZTBjMTg3MDVmZmJlZTU0NmI0ODhj
NTJhYmVlNS4uYzQ3MzNkZTdmNzVkYTlhYjZkMDg3YTIzMWFkOGViOTgxZGM2ODg4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25J
T1MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3Rp
bmF0aW9uSU9TLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2Nv
YTo6Y29uZmlndXJlKCkKICAgICByZXN1bHQgPSBBdWRpb1VuaXRHZXRQcm9wZXJ0eShvdXRwdXRV
bml0KCksIGtBdWRpb1VuaXRQcm9wZXJ0eV9TdHJlYW1Gb3JtYXQsIGtBdWRpb1VuaXRTY29wZV9P
dXRwdXQsIDAsICh2b2lkKikmc3RyZWFtRm9ybWF0LCAmc2l6ZSk7CiAgICAgQVNTRVJUKCFyZXN1
bHQpOwogCi0gICAgc2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKHN0cmVhbUZvcm1hdCwg
c2FtcGxlUmF0ZSgpKTsKKyAgICBzZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oc3RyZWFt
Rm9ybWF0KTsKIAogICAgIHJlc3VsdCA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG91dHB1dFVuaXQo
KSwga0F1ZGlvVW5pdFByb3BlcnR5X1N0cmVhbUZvcm1hdCwga0F1ZGlvVW5pdFNjb3BlX0lucHV0
LCAwLCAodm9pZCopJnN0cmVhbUZvcm1hdCwgc2l6ZW9mKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlw
dGlvbikpOwogICAgIEFTU0VSVCghcmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcAppbmRleCA3YTAx
ZWFlMDZlMjkwMzJmZDA1OThhMDBlMzRkZTIzNTdkMmE1N2E0Li5mZjY5NDNiMzgwM2ExYjI1NTJi
NThlYzI3MjUwMTQ1Y2Q4ZWE0OGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCkBAIC02Nyw3ICs2Nyw3
IEBAIHZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpjb25maWd1cmUoKQogCiAgICAgLy8gU2V0
IHN0cmVhbSBmb3JtYXQKICAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9y
bWF0OwotICAgIHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihzdHJlYW1Gb3JtYXQsIHNh
bXBsZVJhdGUoKSk7CisgICAgc2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKHN0cmVhbUZv
cm1hdCk7CiAKICAgICByZXN1bHQgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShvdXRwdXRVbml0KCks
IGtBdWRpb1VuaXRQcm9wZXJ0eV9TdHJlYW1Gb3JtYXQsIGtBdWRpb1VuaXRTY29wZV9JbnB1dCwg
MCwgKHZvaWQqKSZzdHJlYW1Gb3JtYXQsIHNpemVvZihBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRp
b24pKTsKICAgICBBU1NFUlQoIXJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0u
Y3BwCmluZGV4IDhhZWMyZWEzZDRmMTc1OWRmN2NlNjQyMzZjMzJiNjgxNTY0NGRmNzEuLjNkNmM4
MjFhYTU5ZmM0NWE3ZWI3YzFmODMyNjJiNjhiY2Q5ZmM5NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZl
clBhcnNlcldlYk0uY3BwCkBAIC01NSw2ICs1NSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
dXNpbmcgbmFtZXNwYWNlIFBBTDsKIAorLy8gRklYTUU6IFJlbW92ZSB0aGlzIG9uY2Uga0NNVmlk
ZW9Db2RlY1R5cGVfVlA5IGlzIGFkZGVkIHRvIENNRm9ybWF0RGVzY3JpcHRpb24uaAorY29uc3Rl
eHByIENNVmlkZW9Db2RlY1R5cGUga0NNVmlkZW9Db2RlY1R5cGVfVlA5IHsgJ3ZwMDknIH07CisK
IHN0YXRpYyBib29sIGlzV2VibVBhcnNlckF2YWlsYWJsZSgpCiB7CiAgICAgcmV0dXJuICEhd2Vi
bTo6c3dhcCAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYk1Q
YXJzZXJFbmFibGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2UuaAppbmRleCA1Mjg4
N2VjMjIzZTczMWIwOTdlYTA0NjI4YTYxYmM0NzVjOGNjMTZjLi41OGExMmE5MTE0ZjZmZmUyZDQ0
NzliOTFlYTA5YjdmMmQwZTAzNjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlLmgK
QEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShN
QUMpCiAKICNpbmNsdWRlICJDYXB0dXJlRGV2aWNlLmgiCisjaW5jbHVkZSA8cGFsL3NwaS9jZi9D
b3JlQXVkaW9TUEkuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svTW9ja0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCmluZGV4IDg2M2M0ZDU0YmY5Nzhk
MjhlYjUxMTM2NzI0MDE4ZGQxNzEzMzRjZDMuLjhlM2FmMDM1MzZjMmQzYjc2Yjg2MzU2OGY4NzQ5
NGI1YTNjMWY0YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9j
a0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9Nb2NrQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcApAQCAtNjcsNyArNjcsNyBAQCB2b2lk
IE1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnRpY2soKQogewogICAgIG1fd29ya1F1ZXVlLT5k
aXNwYXRjaChbdGhpcywgc2FtcGxlUmF0ZSA9IHNhbXBsZVJhdGUoKSwgbnVtYmVyT2ZGcmFtZXNU
b1Byb2Nlc3MgPSBtX251bWJlck9mRnJhbWVzVG9Qcm9jZXNzXSB7CiAgICAgICAgIEF1ZGlvU3Ry
ZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1Gb3JtYXQ7Ci0gICAgICAgIHNldEF1ZGlvU3RyZWFt
QmFzaWNEZXNjcmlwdGlvbihzdHJlYW1Gb3JtYXQsIHNhbXBsZVJhdGUpOworICAgICAgICBzZXRB
dWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oc3RyZWFtRm9ybWF0KTsKIAogICAgICAgICBXZWJB
dWRpb0J1ZmZlckxpc3Qgd2ViQXVkaW9CdWZmZXJMaXN0IHsgc3RyZWFtRm9ybWF0LCBudW1iZXJP
ZkZyYW1lc1RvUHJvY2VzcyB9OwogICAgICAgICBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OmlucHV0
UHJvYyh0aGlzLCAwLCAwLCAwLCBudW1iZXJPZkZyYW1lc1RvUHJvY2Vzcywgd2ViQXVkaW9CdWZm
ZXJMaXN0Lmxpc3QoKSk7Cg==
</data>
<flag name="commit-queue"
          id="424026"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408581</attachid>
            <date>2020-09-11 19:37:34 -0700</date>
            <delta_ts>2020-09-14 08:19:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216425-20200911193734.patch</filename>
            <type>text/plain</type>
            <size>67241</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2OTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTk4OWVhNTIyNDI0MGRl
ZWVkYTdlYzgzNzVkNzMxMzY0MWQ0MWJkYS4uY2Y1ZWZhOTI4MzQxNjU1Nzg0OTQzYzc1NDcyZDk0
YzcwMmMwNGM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDIwLTA5LTExICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHByb3BlciBzdXBwb3J0
IGZvciBBdWRpb0NvbnRleHRPcHRpb25zLnNhbXBsZVJhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjQyNQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBwcm9wZXIgc3VwcG9ydCBmb3IgQXVkaW9D
b250ZXh0T3B0aW9ucy5zYW1wbGVSYXRlLiBQcmV2aW91c2x5LCBvdXIgQXVkaW9Db250ZXh0IGFs
d2F5cyBydW4KKyAgICAgICAgYXQgdGhlIGhhcmR3YXJlJ3Mgc2FtcGxlUmF0ZSwgbm8gbWF0dGVy
IHdoYXQgdmFsdWUgZm9yIHNldCBmb3IgQXVkaW9Db250ZXh0T3B0aW9ucy5zYW1wbGVSYXRlLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYmFzZWQgb24gdGhlIGZvbGxvd2luZyBDaHJvbWl1bSBj
aGFuZ2VzOgorICAgICAgICAtIGh0dHBzOi8vY2hyb21pdW0tcmV2aWV3Lmdvb2dsZXNvdXJjZS5j
b20vYy9jaHJvbWl1bS9zcmMvKy8xNDgyOTU3CisgICAgICAgIC0gaHR0cHM6Ly9jb2RlcmV2aWV3
LmNocm9taXVtLm9yZy8yNTQ5MDkzMDA5CisgICAgICAgIC0gaHR0cHM6Ly9jb2RlcmV2aWV3LmNo
cm9taXVtLm9yZy8xNDE4OTAzNQorCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0
QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVmYXVsdEF1ZGlv
RGVzdGluYXRpb25Ob2RlOjpjcmVhdGVEZXN0aW5hdGlvbik6CisgICAgICAgIFdoZW4gY3JlYXRp
bmcgYSBBdWRpb0Rlc3RpbmF0aW9uLCBwYXNzIHRoZSByZXF1ZXN0ZWQgQXVkaW9Db250ZXh0IHNh
bXBsZSByYXRlCisgICAgICAgIGluc3RlYWQgb2YgdGhlIGhhcmR3YXJlIHNhbXBsZSByYXRlLgor
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9GSUZPLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmg6IFJlbW92ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vUHVzaFB1bGxGSUZPLmNwcDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vUHVzaFB1bGxGSUZPLmg6IEFkZGVkLgorICAgICAgICBSZXBsYWNlIEF1ZGlv
RklGTyBhbmQgQXVkaW9QdWxsRklGTyB3aXRoIGEgbmV3IFB1c2hQdWxsRklGTyByZXBsYWNlbWVu
dCwgc2ltaWxhcmx5CisgICAgICAgIHRvIHdoYXQgd2FzIGRvbmUgaW4gQ2hyb21pdW0gaW46Cisg
ICAgICAgIC0gaHR0cHM6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8yNTQ5MDkzMDA5CisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TXVsdGlDaGFubmVsUmVzYW1wbGVyOjpNdWx0aUNoYW5uZWxSZXNhbXBsZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2luY1Jlc2FtcGxlcjo6U2luY1Jlc2FtcGxlcik6CisgICAgICAgIChXZWJDb3JlOjpTaW5j
UmVzYW1wbGVyOjp1cGRhdGVSZWdpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbmNSZXNhbXBs
ZXI6OmluaXRpYWxpemVLZXJuZWwpOgorICAgICAgICAoV2ViQ29yZTo6U2luY1Jlc2FtcGxlcjo6
cHJvY2Vzcyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5oOgorICAg
ICAgICBBZGQgcGFyYW1ldGVyIHRvIE11bHRpQ2hhbm5lbFJlc2FtcGxlciAmIFNpbmNSZXNhbXBs
ZXIgdG8gYWxsb3cgdGhlIGNsaWVudCB0byBzcGVjaWZ5CisgICAgICAgIHRoZSBzaXplIG9mIHRo
ZSBidWZmZXIgaW4gZnJhbWVzIHdoZW4gdGhlIHJlc2FtcGxlciBjYWxscyBBdWRpb1NvdXJjZVBy
b3ZpZGVyOjpwcm92aWRlSW5wdXQoKQorICAgICAgICB0byBnZXQgaW5wdXQgZGF0YS4gVGhpcyBp
cyBuZWNlc3NhcnkgYmVjYXVzZSBvdXIgV2ViQXVkaW8gaW1wbGVtZW50YXRpb24gdXNlcyBhIHN0
YXRpYworICAgICAgICBidWZmZXIgc2l6ZSBvZiAxMjggZnJhbWVzLiBUaGlzIGlzIHNpbWlsYXIg
dG8gd2hhdCB3YXMgZG9uZSBpbiBDaHJvbWl1bSBpbjoKKyAgICAgICAgLSBodHRwczovL2NvZGVy
ZXZpZXcuY2hyb21pdW0ub3JnLzE0MTg5MDM1CisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9E
ZXN0aW5hdGlvbkNvY29hOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2EpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpyZW5kZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpwcm92aWRlSW5wdXQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5oOgorICAg
ICAgICAtIEFkb3B0IFB1c2hQdWxsRklGTyB0byByZXNvbHZlIHRoZSBidWZmZXIgc2l6ZSBtaXNt
YXRjaCBiZXR3ZWVuIHRoZSBXZWJBdWRpbyBlbmdpbmUgYW5kCisgICAgICAgICAgdGhlIGNhbGxi
YWNrIGZ1bmN0aW9uIGZyb20gdGhlIGFjdHVhbCBhdWRpbyBkZXZpY2UsIHNpbWlsYXJseSB0byB3
aGF0IHdhcyBkb25lIGluIENocm9taXVtLgorICAgICAgICAtIFdoZW4gdGhlIGNvbnRleHQncyBz
YW1wbGUgcmF0ZSBkaWZmZXJzIGZyb20gdGhlIGhhcmR3YXJlIHNhbXBsZSByYXRlLCBpbnN0YW50
aWF0ZSBhCisgICAgICAgICAgTXVsdGlDaGFubmVsUmVzYW1wbGVyIGFuZCB1c2UgaW4gaW4gcmVu
ZGVyKCkgdG8gZG8gdGhlIHJlc2FtcGxpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9p
b3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3Rp
bmF0aW9uQ29jb2E6OmNvbmZpZ3VyZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1
ZGlvRGVzdGluYXRpb25NYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlv
bkNvY29hOjpjb25maWd1cmUpOgorICAgICAgICBEcm9wIHNhbXBsZVJhdGUgcGFyYW1ldGVyIGFz
IGl0IGlzIG5vIGxvbmdlciBuZWVkZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0F1ZGlvRGVz
dGluYXRpb25Db2NvYTo6dGljayk6CisKIDIwMjAtMDktMTEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBTZXJpYWxpemF0aW9uIHNob3VsZCBoYXZlIGV4Y2Vw
dGlvbiBjaGVja3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCBiMTU5ZTMyZjEx
YmE3OTRmMWZlMTA3NThkOTYwMGVlNmQwODk0MjhlLi40MjNkY2EzMGVkYjQ0MDQwYzE0ZTY5MzE4
NDFkMGYyM2EwOGVjZGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCkBAIC04Miwx
MCArODIsNyBAQCB2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6dW5pbml0aWFsaXpl
KCkKIAogdm9pZCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZURlc3RpbmF0aW9u
KCkKIHsKLSAgICBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUgPSBBdWRpb0Rlc3RpbmF0aW9uOjpo
YXJkd2FyZVNhbXBsZVJhdGUoKTsKLSAgICBMT0coV2ViQXVkaW8sICI+Pj4+IGhhcmR3YXJlU2Ft
cGxlUmF0ZSA9ICVmXG4iLCBoYXJkd2FyZVNhbXBsZVJhdGUpOwotCi0gICAgbV9kZXN0aW5hdGlv
biA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5tZWRpYVN0cmF0ZWd5KCkuY3JlYXRlQXVkaW9EZXN0
aW5hdGlvbigqdGhpcywgbV9pbnB1dERldmljZUlkLCBtX251bWJlck9mSW5wdXRDaGFubmVscywg
Y2hhbm5lbENvdW50KCksIGhhcmR3YXJlU2FtcGxlUmF0ZSk7CisgICAgbV9kZXN0aW5hdGlvbiA9
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5tZWRpYVN0cmF0ZWd5KCkuY3JlYXRlQXVkaW9EZXN0aW5h
dGlvbigqdGhpcywgbV9pbnB1dERldmljZUlkLCBtX251bWJlck9mSW5wdXRDaGFubmVscywgY2hh
bm5lbENvdW50KCksIG1fc2FtcGxlUmF0ZSk7CiB9CiAKIHZvaWQgRGVmYXVsdEF1ZGlvRGVzdGlu
YXRpb25Ob2RlOjplbmFibGVJbnB1dChjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CmluZGV4IDA4NzIxNjA2NjIwNmZlY2UwMWEwMGVlNWI0MzY1NDIyOWIyYWE5ZTQuLjMw
MjkxYjEyZTE3OGYzZDljMzE3MzI5NzkyZjI4Nzk4ZDdkNjc2YWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBA
IC0xNzg4LDkgKzE3ODgsNyBAQCBwbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rpb24uY3Bw
CiBwbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHAKIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5l
bC5jcHAKIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvRFNQS2VybmVsUHJvY2Vzc29yLmNwcAotcGxhdGZv
cm0vYXVkaW8vQXVkaW9GSUZPLmNwcAogcGxhdGZvcm0vYXVkaW8vQXVkaW9IYXJkd2FyZUxpc3Rl
bmVyLmNwcAotcGxhdGZvcm0vYXVkaW8vQXVkaW9QdWxsRklGTy5jcHAKIHBsYXRmb3JtL2F1ZGlv
L0F1ZGlvUmVzYW1wbGVyLmNwcAogcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXJLZXJuZWwu
Y3BwCiBwbGF0Zm9ybS9hdWRpby9BdWRpb1V0aWxpdGllcy5jcHAKQEAgLTE4MTQsNiArMTgxMiw3
IEBAIHBsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHAKIHBsYXRmb3JtL2F1
ZGlvL1Bhbm5lci5jcHAKIHBsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcAog
cGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAorcGxhdGZvcm0v
YXVkaW8vUHVzaFB1bGxGSUZPLmNwcAogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNwcAogcGxhdGZv
cm0vYXVkaW8vUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyLmNwcAogcGxhdGZvcm0vYXVkaW8vUmV2
ZXJiQ29udm9sdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDQ2MzdjZTQ4MmVkNDFjYzgyZTExNjQ3ZDZjY2NiNTA1ODZk
MGVlOTguLmJmMTdkNGY5MTVhODE2NzFiZjUxZGJkMGU4YTMxM2RlOTg1ZGZlMWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI1
MjYsNiArMjUyNiw3IEBACiAJCTgzQzU3OTVEMURBNUMzMDEwMDZGQUNBOCAvKiBTY3JvbGxUb09w
dGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgz
NTBDM0U3MURBNTlCNjIwMDM1NjQ0NiAvKiBTY3JvbGxUb09wdGlvbnMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4M0QzNUFFQzFDNzE4N0ZBMDBG
NzBENUEgLyogWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNEMzVBRUExQzcxODdFRDAwRjcwRDVBIC8qIFhN
TEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQuaCAqLzsgfTsKIAkJODNEMzVBRjIxQzcxOEQ5MDAwRjcw
RDVBIC8qIEpTWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNEMzVBRjAxQzcxOEQ4NDAwRjcwRDVBIC8qIEpT
WE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5oICovOyB9OworCQk4M0Q1MTFGNjI1MEMxQ0JGMDAy
RURDNTEgLyogUHVzaFB1bGxGSUZPLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4M0Q1MTFGNTI1MEMxQ0E4MDAyRURDNTEgLyogUHVzaFB1bGxGSUZPLmgg
Ki87IH07CiAJCTgzREI5RTBGMjREQTE5NDkwMDM3QjQ2OCAvKiBCaXF1YWRGaWx0ZXJUeXBlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0RCOUUwQzI0
REExOEI1MDAzN0I0NjggLyogQmlxdWFkRmlsdGVyVHlwZS5oICovOyB9OwogCQk4M0RCOUUxMDI0
REExOTU3MDAzN0I0NjggLyogQmlxdWFkRmlsdGVyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNEQjlFMEUyNERBMThCNjAwMzdCNDY4IC8q
IEJpcXVhZEZpbHRlck9wdGlvbnMuaCAqLzsgfTsKIAkJODNFMzU5QTIxQkIxMDMxRDAwMkNFQjk4
IC8qIEpTSFRNTFRpbWVFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4M0UzNTlBMDFCQjEwMzFEMDAyQ0VCOTggLyogSlNIVE1MVGltZUVsZW1l
bnQuaCAqLzsgfTsKQEAgLTEwNzA3LDYgKzEwNzA4LDggQEAKIAkJODNEMzVBRUIxQzcxODdFRDAw
RjcwRDVBIC8qIFhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4M0QzNUFFRjFDNzE4RDg0MDBGNzBENUEgLyogSlNYTUxIdHRwUmVxdWVzdEV2
ZW50VGFyZ2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTWE1M
SHR0cFJlcXVlc3RFdmVudFRhcmdldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTgzRDM1QUYwMUM3MThEODQwMEY3MEQ1QSAvKiBKU1hNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNYTUxIdHRwUmVxdWVzdEV2ZW50
VGFyZ2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzRDUxMUYzMjUwQzFDQTgw
MDJFREM1MSAvKiBQdXNoUHVsbEZJRk8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUHVzaFB1bGxGSUZPLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODNENTExRjUyNTBDMUNBODAwMkVEQzUxIC8qIFB1c2hQdWxsRklGTy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQdXNoUHVsbEZJRk8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODNEQjlFMEEyNERBMThCNDAwMzdCNDY4IC8qIEJpcXVhZEZpbHRlclR5cGUuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IEJpcXVhZEZpbHRlclR5cGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4M0RCOUUwQzI0REExOEI1MDAzN0I0NjggLyogQmlxdWFkRmlsdGVyVHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBCaXF1YWRGaWx0ZXJUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTgzREI5RTBEMjREQTE4QjUwMDM3QjQ2OCAvKiBCaXF1YWRGaWx0ZXJPcHRpb25zLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBCaXF1YWRGaWx0ZXJPcHRpb25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTMwMDMzLDYgKzMwMDM2LDggQEAKIAkJCQkwNzBFMDkxODE4NzVFRDkzMDAzQTFEM0MgLyogUGxh
dGZvcm1NZWRpYVNlc3Npb24uaCAqLywKIAkJCQlDREFFOEMwNzE3NDZCOTU3MDA1MzJENzggLyog
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCAqLywKIAkJCQlDREFFOEMwODE3NDZCOTU3
MDA1MzJENzggLyogUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmggKi8sCisJCQkJODNENTEx
RjMyNTBDMUNBODAwMkVEQzUxIC8qIFB1c2hQdWxsRklGTy5jcHAgKi8sCisJCQkJODNENTExRjUy
NTBDMUNBODAwMkVEQzUxIC8qIFB1c2hQdWxsRklGTy5oICovLAogCQkJCUZEMzE2MDZFMTJCMDI2
RjcwMEMxQTM1OSAvKiBSZXZlcmIuY3BwICovLAogCQkJCUZEMzE2MDZGMTJCMDI2RjcwMEMxQTM1
OSAvKiBSZXZlcmIuaCAqLywKIAkJCQlGRDMxNjA3MDEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJi
QWNjdW11bGF0aW9uQnVmZmVyLmNwcCAqLywKQEAgLTMzMjY1LDYgKzMzMjcwLDcgQEAKIAkJCQk1
NzMwM0JFQjIwMDk3RjQwMDAzNTU5NjUgLyogUHVibGljS2V5Q3JlZGVudGlhbFR5cGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTAwODFGRjAwMTZCMEEyRDMwMDhBQUE3QSAvKiBQdWJsaWNTdWZmaXgu
aCBpbiBIZWFkZXJzICovLAogCQkJCTEwRkIwODRCMTRFMTVDN0UwMEEzREI5OCAvKiBQdWJsaWNV
UkxNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk4M0Q1MTFGNjI1MEMxQ0JGMDAyRURDNTEg
LyogUHVzaFB1bGxGSUZPLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NTBBMEJDQTA4NUY2MDM5MDA3
MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNDMUY1OTQxRURG
NjlEMzAwNDEwRDI3IC8qIFF1YWxpZmllZE5hbWVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTE1RTMxRjQxRTBDQjBCNTAwNEIzNzFDIC8qIFF1aWNrTG9vay5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9GSUZPLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMGIzYWE0OTlmNjk4YmI0NDM3ZGJiOTZkZDcyMTU1MGJhMmNjNWZl
Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
MTQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1l
IG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0g
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShXRUJfQVVESU8pCi0KLSNpbmNs
dWRlICJBdWRpb0ZJRk8uaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1BdWRpb0ZJRk86OkF1
ZGlvRklGTyh1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgZmlmb0xlbmd0aCkKLSAg
ICA6IG1fZmlmb0F1ZGlvQnVzKEF1ZGlvQnVzOjpjcmVhdGUobnVtYmVyT2ZDaGFubmVscywgZmlm
b0xlbmd0aCkpCi0gICAgLCBtX2ZpZm9MZW5ndGgoZmlmb0xlbmd0aCkKLSAgICAsIG1fZnJhbWVz
SW5GaWZvKDApCi0gICAgLCBtX3JlYWRJbmRleCgwKQotICAgICwgbV93cml0ZUluZGV4KDApCi17
Ci19Ci0KLXZvaWQgQXVkaW9GSUZPOjpjb25zdW1lKEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwgc2l6
ZV90IGZyYW1lc1RvQ29uc3VtZSkKLXsKLSAgICBib29sIGlzR29vZCA9IGRlc3RpbmF0aW9uICYm
IChmcmFtZXNUb0NvbnN1bWUgPD0gbV9maWZvTGVuZ3RoKSAmJiAoZnJhbWVzVG9Db25zdW1lIDw9
IG1fZnJhbWVzSW5GaWZvKSAmJiAoZGVzdGluYXRpb24tPmxlbmd0aCgpID49IGZyYW1lc1RvQ29u
c3VtZSk7Ci0gICAgQVNTRVJUKGlzR29vZCk7Ci0gICAgaWYgKCFpc0dvb2QpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIC8vIENvcHkgdGhlIHJlcXVlc3RlZCBudW1iZXIgb2Ygc2FtcGxlcyB0byB0
aGUgZGVzdGluYXRpb24uCi0KLSAgICBzaXplX3QgcGFydDFMZW5ndGg7Ci0gICAgc2l6ZV90IHBh
cnQyTGVuZ3RoOwotICAgIGZpbmRXcmFwTGVuZ3RocyhtX3JlYWRJbmRleCwgZnJhbWVzVG9Db25z
dW1lLCBwYXJ0MUxlbmd0aCwgcGFydDJMZW5ndGgpOwotCi0gICAgc2l6ZV90IG51bWJlck9mQ2hh
bm5lbHMgPSBtX2ZpZm9BdWRpb0J1cy0+bnVtYmVyT2ZDaGFubmVscygpOwotCi0gICAgZm9yIChz
aXplX3QgY2hhbm5lbEluZGV4ID0gMDsgY2hhbm5lbEluZGV4IDwgbnVtYmVyT2ZDaGFubmVsczsg
KytjaGFubmVsSW5kZXgpIHsKLSAgICAgICAgZmxvYXQqIGRlc3RpbmF0aW9uRGF0YSA9IGRlc3Rp
bmF0aW9uLT5jaGFubmVsKGNoYW5uZWxJbmRleCktPm11dGFibGVEYXRhKCk7Ci0gICAgICAgIGNv
bnN0IGZsb2F0KiBzb3VyY2VEYXRhID0gbV9maWZvQXVkaW9CdXMtPmNoYW5uZWwoY2hhbm5lbElu
ZGV4KS0+ZGF0YSgpOwotCi0gICAgICAgIGJvb2wgaXNDb3B5R29vZCA9ICgobV9yZWFkSW5kZXgg
PCBtX2ZpZm9MZW5ndGgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAobV9yZWFkSW5k
ZXggKyBwYXJ0MUxlbmd0aCkgPD0gbV9maWZvTGVuZ3RoCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAmJiAocGFydDFMZW5ndGggPD0gZGVzdGluYXRpb24tPmxlbmd0aCgpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJiYgKHBhcnQxTGVuZ3RoICsgcGFydDJMZW5ndGgpIDw9IGRlc3Rp
bmF0aW9uLT5sZW5ndGgoKSk7Ci0gICAgICAgIEFTU0VSVChpc0NvcHlHb29kKTsKLSAgICAgICAg
aWYgKCFpc0NvcHlHb29kKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1lbWNweShk
ZXN0aW5hdGlvbkRhdGEsIHNvdXJjZURhdGEgKyBtX3JlYWRJbmRleCwgcGFydDFMZW5ndGggKiBz
aXplb2YoKnNvdXJjZURhdGEpKTsKLSAgICAgICAgLy8gSGFuZGxlIHdyYXAgYXJvdW5kIG9mIHRo
ZSBGSUZPLCBpZiBuZWVkZWQuCi0gICAgICAgIGlmIChwYXJ0Mkxlbmd0aCkKLSAgICAgICAgICAg
IG1lbWNweShkZXN0aW5hdGlvbkRhdGEgKyBwYXJ0MUxlbmd0aCwgc291cmNlRGF0YSwgcGFydDJM
ZW5ndGggKiBzaXplb2YoKnNvdXJjZURhdGEpKTsKLSAgICB9Ci0gICAgbV9yZWFkSW5kZXggPSB1
cGRhdGVJbmRleChtX3JlYWRJbmRleCwgZnJhbWVzVG9Db25zdW1lKTsKLSAgICBBU1NFUlQobV9m
cmFtZXNJbkZpZm8gPj0gZnJhbWVzVG9Db25zdW1lKTsKLSAgICBtX2ZyYW1lc0luRmlmbyAtPSBm
cmFtZXNUb0NvbnN1bWU7Ci19Ci0KLXZvaWQgQXVkaW9GSUZPOjpwdXNoKGNvbnN0IEF1ZGlvQnVz
KiBzb3VyY2VCdXMpCi17Ci0gICAgLy8gQ29weSB0aGUgc291cmNlQnVzIGludG8gdGhlIEZJRk8g
YnVmZmVyLgotCi0gICAgYm9vbCBpc0dvb2QgPSBzb3VyY2VCdXMgJiYgKG1fZnJhbWVzSW5GaWZv
ICsgc291cmNlQnVzLT5sZW5ndGgoKSA8PSBtX2ZpZm9MZW5ndGgpOwotICAgIGlmICghaXNHb29k
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBzaXplX3Qgc291cmNlTGVuZ3RoID0gc291cmNlQnVz
LT5sZW5ndGgoKTsKLSAgICBzaXplX3QgcGFydDFMZW5ndGg7Ci0gICAgc2l6ZV90IHBhcnQyTGVu
Z3RoOwotICAgIGZpbmRXcmFwTGVuZ3RocyhtX3dyaXRlSW5kZXgsIHNvdXJjZUxlbmd0aCwgcGFy
dDFMZW5ndGgsIHBhcnQyTGVuZ3RoKTsKLQotICAgIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzID0g
bV9maWZvQXVkaW9CdXMtPm51bWJlck9mQ2hhbm5lbHMoKTsKLQotICAgIGZvciAoc2l6ZV90IGNo
YW5uZWxJbmRleCA9IDA7IGNoYW5uZWxJbmRleCA8IG51bWJlck9mQ2hhbm5lbHM7ICsrY2hhbm5l
bEluZGV4KSB7Ci0gICAgICAgIGZsb2F0KiBkZXN0aW5hdGlvbiA9IG1fZmlmb0F1ZGlvQnVzLT5j
aGFubmVsKGNoYW5uZWxJbmRleCktPm11dGFibGVEYXRhKCk7Ci0gICAgICAgIGNvbnN0IGZsb2F0
KiBzb3VyY2UgPSBzb3VyY2VCdXMtPmNoYW5uZWwoY2hhbm5lbEluZGV4KS0+ZGF0YSgpOwotCi0g
ICAgICAgIGJvb2wgaXNDb3B5R29vZCA9ICgobV93cml0ZUluZGV4IDwgbV9maWZvTGVuZ3RoKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKG1fd3JpdGVJbmRleCArIHBhcnQxTGVuZ3Ro
KSA8PSBtX2ZpZm9MZW5ndGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHBhcnQyTGVu
Z3RoIDwgbV9maWZvTGVuZ3RoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBwYXJ0MUxl
bmd0aCArIHBhcnQyTGVuZ3RoIDw9IHNvdXJjZUxlbmd0aCk7Ci0gICAgICAgIEFTU0VSVChpc0Nv
cHlHb29kKTsKLSAgICAgICAgaWYgKCFpc0NvcHlHb29kKQotICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgIG1lbWNweShkZXN0aW5hdGlvbiArIG1fd3JpdGVJbmRleCwgc291cmNlLCBwYXJ0
MUxlbmd0aCAqIHNpemVvZigqZGVzdGluYXRpb24pKTsKLQotICAgICAgICAvLyBIYW5kbGUgd3Jh
cCBhcm91bmQgb2YgdGhlIEZJRk8sIGlmIG5lZWRlZC4KLSAgICAgICAgaWYgKHBhcnQyTGVuZ3Ro
KQotICAgICAgICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uLCBzb3VyY2UgKyBwYXJ0MUxlbmd0aCwg
cGFydDJMZW5ndGggKiBzaXplb2YoKmRlc3RpbmF0aW9uKSk7Ci0gICAgfQotICAgICAgICAKLSAg
ICBtX2ZyYW1lc0luRmlmbyArPSBzb3VyY2VMZW5ndGg7Ci0gICAgQVNTRVJUKG1fZnJhbWVzSW5G
aWZvIDw9IG1fZmlmb0xlbmd0aCk7Ci0gICAgbV93cml0ZUluZGV4ID0gdXBkYXRlSW5kZXgobV93
cml0ZUluZGV4LCBzb3VyY2VMZW5ndGgpOwotfQotCi12b2lkIEF1ZGlvRklGTzo6ZmluZFdyYXBM
ZW5ndGhzKHNpemVfdCBpbmRleCwgc2l6ZV90IHNpemUsIHNpemVfdCYgcGFydDFMZW5ndGgsIHNp
emVfdCYgcGFydDJMZW5ndGgpCi17Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJ
T04oaW5kZXggPCBtX2ZpZm9MZW5ndGggJiYgc2l6ZSA8PSBtX2ZpZm9MZW5ndGgpOwotICAgIGlm
IChpbmRleCA8IG1fZmlmb0xlbmd0aCAmJiBzaXplIDw9IG1fZmlmb0xlbmd0aCkgewotICAgICAg
ICBpZiAoaW5kZXggKyBzaXplID4gbV9maWZvTGVuZ3RoKSB7Ci0gICAgICAgICAgICAvLyBOZWVk
IHRvIHdyYXAuIEZpZ3VyZSBvdXQgdGhlIGxlbmd0aCBvZiBlYWNoIHBpZWNlLgotICAgICAgICAg
ICAgcGFydDFMZW5ndGggPSBtX2ZpZm9MZW5ndGggLSBpbmRleDsKLSAgICAgICAgICAgIHBhcnQy
TGVuZ3RoID0gc2l6ZSAtIHBhcnQxTGVuZ3RoOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgLy8gTm8gd3JhcCBuZWVkZWQuCi0gICAgICAgICAgICBwYXJ0MUxlbmd0aCA9IHNpemU7Ci0g
ICAgICAgICAgICBwYXJ0Mkxlbmd0aCA9IDA7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAg
ICAgICAvLyBJbnZhbGlkIHZhbHVlcyBmb3IgaW5kZXggb3Igc2l6ZS4gU2V0IHRoZSBwYXJ0IGxl
bmd0aHMgdG8gemVybyBzbyBub3RoaW5nIGlzIGNvcGllZC4KLSAgICAgICAgcGFydDFMZW5ndGgg
PSAwOwotICAgICAgICBwYXJ0Mkxlbmd0aCA9IDA7Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9GSUZPLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MGY0MzhkZDdkMGZhNTlmYjY0NGQ0ZGY1NzJmNTU5ZmQ2NjMwOGJkMy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb0ZJRk8uaAorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgQXVkaW9GSUZP
X2gKLSNkZWZpbmUgQXVkaW9GSUZPX2gKLQotI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQXVkaW9GSUZPIGZpbmFsIHsKLSAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICAvLyBDcmVhdGUgYSBGSUZPIGxhcmdlIGVub3Vn
aCB0byBob2xkIHxmaWZvTGVuZ3RofCBmcmFtZXMgb2YgZGF0YSBvZiB8bnVtYmVyT2ZDaGFubmVs
c3wgY2hhbm5lbHMuCi0gICAgQXVkaW9GSUZPKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNp
emVfdCBmaWZvTGVuZ3RoKTsKLQotICAgIC8vIFB1c2ggdGhlIGRhdGEgZnJvbSB0aGUgYnVzIGlu
dG8gdGhlIEZJRk8uCi0gICAgdm9pZCBwdXNoKGNvbnN0IEF1ZGlvQnVzKik7Ci0KLSAgICAvLyBD
b25zdW1lIHxmcmFtZXNUb0NvbnN1bWV8IGZyYW1lcyBvZiBkYXRhIGZyb20gdGhlIEZJRk8gYW5k
IHB1dCB0aGVtIGluIHxkZXN0aW5hdGlvbnwuIFRoZQotICAgIC8vIGNvcnJlc3BvbmRpbmcgZnJh
bWVzIGFyZSByZW1vdmVkIGZyb20gdGhlIEZJRk8uCi0gICAgdm9pZCBjb25zdW1lKEF1ZGlvQnVz
KiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1RvQ29uc3VtZSk7Ci0KLSAgICAvLyBOdW1iZXIg
b2YgZnJhbWVzIG9mIGRhdGEgdGhhdCBhcmUgY3VycmVudGx5IGluIHRoZSBGSUZPLgotICAgIHNp
emVfdCBmcmFtZXNJbkZpZm8oKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lc0luRmlmbzsgfQotCi1w
cml2YXRlOgotICAgIC8vIFVwZGF0ZSB0aGUgRklGTyBpbmRleCBieSB0aGUgc3RlcCwgd2l0aCBh
cHByb3ByaWF0ZSB3cmFwcGluZyBhcm91bmQgdGhlIGVuZHBvaW50LgotICAgIGludCB1cGRhdGVJ
bmRleChpbnQgaW5kZXgsIGludCBzdGVwKSB7IHJldHVybiAoaW5kZXggKyBzdGVwKSAlIG1fZmlm
b0xlbmd0aDsgfQotCi0gICAgdm9pZCBmaW5kV3JhcExlbmd0aHMoc2l6ZV90IGluZGV4LCBzaXpl
X3QgcHJvdmlkZXJTaXplLCBzaXplX3QmIHBhcnQxTGVuZ3RoLCBzaXplX3QmIHBhcnQyTGVuZ3Ro
KTsKLSAgICAKLSAgICAvLyBUaGUgRklGTyBpdHNlbGYuIEluIHJlYWxpdHksIHRoZSBGSUZPIGlz
IGEgY2lyY3VsYXIgYnVmZmVyLgotICAgIFJlZlB0cjxBdWRpb0J1cz4gbV9maWZvQXVkaW9CdXM7
Ci0KLSAgICAvLyBUaGUgdG90YWwgYXZhaWxhYmxlIHNwYWNlIGluIHRoZSBGSUZPLgotICAgIHNp
emVfdCBtX2ZpZm9MZW5ndGg7Ci0KLSAgICAvLyBUaGUgbnVtYmVyIG9mIGFjdHVhbCBlbGVtZW50
cyBpbiB0aGUgRklGTwotICAgIHNpemVfdCBtX2ZyYW1lc0luRmlmbzsKLQotICAgIC8vIFdoZXJl
IHRvIHN0YXJ0IHJlYWRpbmcgZnJvbSB0aGUgRklGTy4KLSAgICBzaXplX3QgbV9yZWFkSW5kZXg7
Ci0KLSAgICAvLyBXaGVyZSB0byBzdGFydCB3cml0aW5nIHRvIHRoZSBGSUZPLgotICAgIHNpemVf
dCBtX3dyaXRlSW5kZXg7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBBdWRpb0ZJRk8uaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9QdWxsRklGTy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1B1
bGxGSUZPLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmIxYTYyMjI2YjlmODE3
MmI3ZmM2MGRjMjIwMjA0NjA1OWIzNTg3YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxG
SUZPLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0
aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lm
IEVOQUJMRShXRUJfQVVESU8pCi0KLSNpbmNsdWRlICJBdWRpb1B1bGxGSUZPLmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotQXVkaW9QdWxsRklGTzo6QXVkaW9QdWxsRklGTyhBdWRpb1NvdXJj
ZVByb3ZpZGVyJiBhdWRpb1Byb3ZpZGVyLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXpl
X3QgZmlmb0xlbmd0aCwgc2l6ZV90IHByb3ZpZGVyU2l6ZSkKLSAgICA6IG1fcHJvdmlkZXIoYXVk
aW9Qcm92aWRlcikKLSAgICAsIG1fZmlmbyhudW1iZXJPZkNoYW5uZWxzLCBmaWZvTGVuZ3RoKQot
ICAgICwgbV9wcm92aWRlclNpemUocHJvdmlkZXJTaXplKQotICAgICwgbV90ZW1wQnVzKEF1ZGlv
QnVzOjpjcmVhdGUobnVtYmVyT2ZDaGFubmVscywgcHJvdmlkZXJTaXplKSkKLXsKLX0KLQotdm9p
ZCBBdWRpb1B1bGxGSUZPOjpjb25zdW1lKEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZy
YW1lc1RvQ29uc3VtZSkKLXsKLSAgICBpZiAoIWRlc3RpbmF0aW9uKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBpZiAoZnJhbWVzVG9Db25zdW1lID4gbV9maWZvLmZyYW1lc0luRmlmbygpKSB7Ci0g
ICAgICAgIC8vIFdlIGRvbid0IGhhdmUgZW5vdWdoIGRhdGEgaW4gdGhlIEZJRk8gdG8gZnVsZmls
bCB0aGUgcmVxdWVzdC4gQXNrIGZvciBtb3JlIGRhdGEuCi0gICAgICAgIGZpbGxCdWZmZXIoZnJh
bWVzVG9Db25zdW1lIC0gbV9maWZvLmZyYW1lc0luRmlmbygpKTsKLSAgICB9Ci0KLSAgICBtX2Zp
Zm8uY29uc3VtZShkZXN0aW5hdGlvbiwgZnJhbWVzVG9Db25zdW1lKTsKLX0KLQotdm9pZCBBdWRp
b1B1bGxGSUZPOjpmaWxsQnVmZmVyKHNpemVfdCBudW1iZXJPZkZyYW1lcykKLXsKLSAgICAvLyBL
ZWVwIGFza2luZyB0aGUgcHJvdmlkZXIgdG8gZ2l2ZSB1cyBkYXRhIHVudGlsIHdlIGhhdmUgcmVj
ZWl2ZWQgYXQgbGVhc3QgfG51bWJlck9mRnJhbWVzfCBvZgotICAgIC8vIGRhdGEuIFN0dWZmIHRo
ZSBkYXRhIGludG8gdGhlIEZJRk8uCi0gICAgc2l6ZV90IGZyYW1lc1Byb3ZpZGVkID0gMDsKLQot
ICAgIHdoaWxlIChmcmFtZXNQcm92aWRlZCA8IG51bWJlck9mRnJhbWVzKSB7Ci0gICAgICAgIG1f
cHJvdmlkZXIucHJvdmlkZUlucHV0KG1fdGVtcEJ1cy5nZXQoKSwgbV9wcm92aWRlclNpemUpOwot
Ci0gICAgICAgIG1fZmlmby5wdXNoKG1fdGVtcEJ1cy5nZXQoKSk7Ci0KLSAgICAgICAgZnJhbWVz
UHJvdmlkZWQgKz0gbV9wcm92aWRlclNpemU7Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9QdWxsRklGTy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9QdWxsRklGTy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBkNzQ4ZmE0MTM4NzM3OWRiMzk1YmVhZTY1Zjg4MmJhMjU4ZTlmYzI2Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0F1ZGlvUHVsbEZJRk8uaAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIElu
Yy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYg
QXVkaW9QdWxsRklGT19oCi0jZGVmaW5lIEF1ZGlvUHVsbEZJRk9faAotCi0jaW5jbHVkZSAiQXVk
aW9CdXMuaCIKLSNpbmNsdWRlICJBdWRpb0ZJRk8uaCIKLSNpbmNsdWRlICJBdWRpb1NvdXJjZVBy
b3ZpZGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gQSBGSUZPIChGaXJzdCBJbiBG
aXJzdCBPdXQpIGJ1ZmZlciB0byBoYW5kbGUgbWlzbWF0Y2hlcyBpbiBidWZmZXIgc2l6ZXMgYmV0
d2VlbiBhIHByb3ZpZGVyIGFuZAotLy8gcmVjZWl2ZXIuIFRoZSByZWNlaXZlciB3aWxsICJwdWxs
IiBkYXRhIGZyb20gdGhpcyBGSUZPLiBJZiBkYXRhIGlzIGFscmVhZHkgYXZhaWxhYmxlIGluIHRo
ZQotLy8gRklGTywgaXQgaXMgcHJvdmlkZWQgdG8gdGhlIHJlY2VpdmVyLiBJZiBpbnN1ZmZpY2ll
bnQgZGF0YSBpcyBhdmFpbGFibGUgdG8gc2F0aXNmeSB0aGUgcmVxdWVzdCwKLS8vIHRoZSBGSUZP
IHdpbGwgYXNrIHRoZSBwcm92aWRlciBmb3IgbW9yZSBkYXRhIHdoZW4gbmVjZXNzYXJ5IHRvIGZ1
bGZpbGwgYSByZXF1ZXN0LiBDb250cmFzdCB0aGlzCi0vLyB3aXRoIGEgInB1c2giIEZJRk8sIHdo
ZXJlIHRoZSBzZW5kZXIgcHVzaGVzIGRhdGEgdG8gdGhlIEZJRk8gd2hpY2ggd2lsbCBpdHNlbGYg
cHVzaCB0aGUgZGF0YSB0bwotLy8gdGhlIHJlY2VpdmVyIHdoZW4gdGhlIEZJRk8gaXMgZnVsbC4K
LWNsYXNzIEF1ZGlvUHVsbEZJRk8gZmluYWwgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwotcHVibGljOgotICAgIC8vIENyZWF0ZSBhIEZJRk8gdGhhdCBnZXRzIGRhdGEgZnJvbSB8cHJv
dmlkZXJ8LiBUaGUgRklGTyB3aWxsIGJlIGxhcmdlIGVub3VnaCB0byBob2xkCi0gICAgLy8gfGZp
Zm9MZW5ndGh8IGZyYW1lcyBvZiBkYXRhIG9mIHxudW1iZXJPZkNoYW5uZWxzfCBjaGFubmVscy4g
VGhlIEF1ZGlvU291cmNlUHJvdmlkZXIgd2lsbCBiZQotICAgIC8vIGFza2VkIHRvIHByb2R1Y2Ug
fHByb3ZpZGVyU2l6ZXwgZnJhbWVzIHdoZW4gdGhlIEZJRk8gbmVlZHMgbW9yZSBkYXRhLgotICAg
IEF1ZGlvUHVsbEZJRk8oQXVkaW9Tb3VyY2VQcm92aWRlciYgYXVkaW9Qcm92aWRlciwgdW5zaWdu
ZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IGZpZm9MZW5ndGgsIHNpemVfdCBwcm92aWRlclNp
emUpOwotCi0gICAgLy8gUmVhZCB8ZnJhbWVzVG9Db25zdW1lfCBmcmFtZXMgZnJvbSB0aGUgRklG
TyBpbnRvIHRoZSBkZXN0aW5hdGlvbi4gSWYgdGhlIEZJRk8gZG9lcyBub3QgaGF2ZQotICAgIC8v
IGVub3VnaCBkYXRhLCB3ZSBhc2sgdGhlIHxwcm92aWRlcnwgdG8gZ2V0IG1vcmUgZGF0YSB0byBm
dWxmaWxsIHRoZSByZXF1ZXN0LgotICAgIHZvaWQgY29uc3VtZShBdWRpb0J1cyogZGVzdGluYXRp
b24sIHNpemVfdCBmcmFtZXNUb0NvbnN1bWUpOwotCi1wcml2YXRlOgotICAgIC8vIEZpbGwgdGhl
IEZJRk8gYnVmZmVyIHdpdGggYXQgbGVhc3QgfG51bWJlck9mRnJhbWVzfCBtb3JlIGRhdGEuCi0g
ICAgdm9pZCBmaWxsQnVmZmVyKHNpemVfdCBudW1iZXJPZkZyYW1lcyk7Ci0KLSAgICAvLyBUaGUg
cHJvdmlkZXIgb2YgdGhlIGRhdGEgaW4gb3VyIEZJRk8uCi0gICAgQXVkaW9Tb3VyY2VQcm92aWRl
ciYgbV9wcm92aWRlcjsKLQotICAgIC8vIFRoZSBhY3R1YWwgRklGTwotICAgIEF1ZGlvRklGTyBt
X2ZpZm87Ci0KLSAgICAvLyBOdW1iZXIgb2YgZnJhbWVzIG9mIGRhdGEgdGhhdCB0aGUgcHJvdmlk
ZXIgd2lsbCBwcm9kdWNlIHBlciBjYWxsLgotICAgIHVuc2lnbmVkIGludCBtX3Byb3ZpZGVyU2l6
ZTsKLQotICAgIC8vIFRlbXBvcmFyeSB3b3Jrc3BhY2UgdG8gaG9sZCB0aGUgZGF0YSBmcm9tIHRo
ZSBwcm92aWRlci4KLSAgICBSZWZQdHI8QXVkaW9CdXM+IG1fdGVtcEJ1czsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEF1ZGlvUHVsbEZJRk8uaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5j
cHAKaW5kZXggNWU2MjY4ZDNiYjEzYjVmMjcxZDJlNmE4OTYwMjgwZTc1M2I5ZGE0ZC4uODRlZmFi
MTYzMWIxYTY2Y2Y2NTE5YzFhMmI2M2U5NjljMjZkZWYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuY3BwCkBAIC05
MiwxMyArOTIsMTMgQEAgcHJpdmF0ZToKICAgICBzaXplX3QgbV9mcmFtZXNUb1Byb2Nlc3MgeyAw
IH07IC8vIFVzZWQgdG8gdmVyaWZ5IHRoYXQgYWxsIGNoYW5uZWxzIGFzayBmb3IgdGhlIHNhbWUg
YW1vdW50LgogfTsKIAotTXVsdGlDaGFubmVsUmVzYW1wbGVyOjpNdWx0aUNoYW5uZWxSZXNhbXBs
ZXIoZG91YmxlIHNjYWxlRmFjdG9yLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKQorTXVsdGlD
aGFubmVsUmVzYW1wbGVyOjpNdWx0aUNoYW5uZWxSZXNhbXBsZXIoZG91YmxlIHNjYWxlRmFjdG9y
LCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBPcHRpb25hbDx1bnNpZ25lZD4gcmVxdWVzdEZy
YW1lcykKICAgICA6IG1fbnVtYmVyT2ZDaGFubmVscyhudW1iZXJPZkNoYW5uZWxzKQogICAgICwg
bV9jaGFubmVsUHJvdmlkZXIobWFrZVVuaXF1ZTxDaGFubmVsUHJvdmlkZXI+KG1fbnVtYmVyT2ZD
aGFubmVscykpCiB7CiAgICAgLy8gQ3JlYXRlIGVhY2ggY2hhbm5lbCdzIHJlc2FtcGxlci4KICAg
ICBmb3IgKHVuc2lnbmVkIGNoYW5uZWxJbmRleCA9IDA7IGNoYW5uZWxJbmRleCA8IG51bWJlck9m
Q2hhbm5lbHM7ICsrY2hhbm5lbEluZGV4KQotICAgICAgICBtX2tlcm5lbHMuYXBwZW5kKG1ha2VV
bmlxdWU8U2luY1Jlc2FtcGxlcj4oc2NhbGVGYWN0b3IpKTsKKyAgICAgICAgbV9rZXJuZWxzLmFw
cGVuZChtYWtlVW5pcXVlPFNpbmNSZXNhbXBsZXI+KHNjYWxlRmFjdG9yLCByZXF1ZXN0RnJhbWVz
KSk7CiB9CiAKIE11bHRpQ2hhbm5lbFJlc2FtcGxlcjo6fk11bHRpQ2hhbm5lbFJlc2FtcGxlcigp
ID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011
bHRpQ2hhbm5lbFJlc2FtcGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVs
dGlDaGFubmVsUmVzYW1wbGVyLmgKaW5kZXggYWM4MWJlYzRiZTBiNDBkMjg0MTc2OWFlOGFjYTA3
MTg2OGJhYjBjZi4uNzE2YmM2MDFlODc4ZTNmNzRmNzRlYTM0ZGNiZDFjNzk4YzRkZGNhOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1w
bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVz
YW1wbGVyLmgKQEAgLTQwLDcgKzQwLDggQEAgY2xhc3MgQXVkaW9CdXM7CiBjbGFzcyBNdWx0aUNo
YW5uZWxSZXNhbXBsZXIgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOiAgIAotICAgIGV4cGxpY2l0IE11bHRpQ2hhbm5lbFJlc2FtcGxlcihkb3VibGUgc2NhbGVG
YWN0b3IsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMpOworICAgIC8vIHJlcXVlc3RGcmFtZXMg
Y29uc3Ryb2xzIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgaW4gZnJhbWVzIHdoZW4gQXVkaW9Tb3Vy
Y2VQcm92aWRlcjo6cHJvdmlkZUlucHV0KCkgaXMgY2FsbGVkLgorICAgIGV4cGxpY2l0IE11bHRp
Q2hhbm5lbFJlc2FtcGxlcihkb3VibGUgc2NhbGVGYWN0b3IsIHVuc2lnbmVkIG51bWJlck9mQ2hh
bm5lbHMsIE9wdGlvbmFsPHVuc2lnbmVkPiByZXF1ZXN0RnJhbWVzID0gV1RGOjpudWxsb3B0KTsK
ICAgICB+TXVsdGlDaGFubmVsUmVzYW1wbGVyKCk7CiAKICAgICAvLyBQcm9jZXNzIGdpdmVuIEF1
ZGlvU291cmNlUHJvdmlkZXIgZm9yIHN0cmVhbWluZyBhcHBsaWNhdGlvbnMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QdXNoUHVsbEZJRk8uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUHVzaFB1bGxGSUZPLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zODQ3
NGE3M2I2ODdhMjljZmU1Y2E0ZjU5ODBkNGYyMTRkNDU4ZTlkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUHVzaFB1bGxGSUZPLmNwcApAQCAtMCwwICsx
LDEzOCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE3IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5B
QkxFKFdFQl9BVURJTykKKyNpbmNsdWRlICJQdXNoUHVsbEZJRk8uaCIKKworI2luY2x1ZGUgIkF1
ZGlvQnVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3Qgc2l6ZV90IFB1c2hQdWxs
RklGTzo6a01heEZJRk9MZW5ndGggPSA2NTUzNjsKKworUHVzaFB1bGxGSUZPOjpQdXNoUHVsbEZJ
Rk8odW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IGZpZm9MZW5ndGgpCisgICAgOiBt
X2ZpZm9MZW5ndGgoZmlmb0xlbmd0aCkKK3sKKyAgICBBU1NFUlQobV9maWZvTGVuZ3RoIDw9IGtN
YXhGSUZPTGVuZ3RoKTsKKyAgICBtX2ZpZm9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKG51bWJlck9m
Q2hhbm5lbHMsIG1fZmlmb0xlbmd0aCk7Cit9CisKK1B1c2hQdWxsRklGTzo6flB1c2hQdWxsRklG
TygpID0gZGVmYXVsdDsKKworLy8gUHVzaCB0aGUgZGF0YSBmcm9tIHxpbnB1dEJ1c3wgdG8gRklG
Ty4gVGhlIHNpemUgb2YgcHVzaCBpcyBkZXRlcm1pbmVkIGJ5CisvLyB0aGUgbGVuZ3RoIG9mIHxp
bnB1dEJ1c3wuCit2b2lkIFB1c2hQdWxsRklGTzo6cHVzaChjb25zdCBBdWRpb0J1cyogaW5wdXRC
dXMpCit7CisgICAgQVNTRVJUKGlucHV0QnVzKTsKKyAgICBBU1NFUlQoaW5wdXRCdXMtPmxlbmd0
aCgpIDw9IG1fZmlmb0xlbmd0aCk7CisgICAgQVNTRVJUKG1faW5kZXhXcml0ZSA8IG1fZmlmb0xl
bmd0aCk7CisKKyAgICBjb25zdCBzaXplX3QgaW5wdXRCdXNMZW5ndGggPSBpbnB1dEJ1cy0+bGVu
Z3RoKCk7CisgICAgY29uc3Qgc2l6ZV90IHJlbWFpbmRlciA9IG1fZmlmb0xlbmd0aCAtIG1faW5k
ZXhXcml0ZTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2ZpZm9CdXMtPm51bWJl
ck9mQ2hhbm5lbHMoKTsgKytpKSB7CisgICAgICAgIGZsb2F0KiBmaWZvQnVzQ2hhbm5lbCA9IG1f
Zmlmb0J1cy0+Y2hhbm5lbChpKS0+bXV0YWJsZURhdGEoKTsKKyAgICAgICAgY29uc3QgZmxvYXQq
IGlucHV0QnVzQ2hhbm5lbCA9IGlucHV0QnVzLT5jaGFubmVsKGkpLT5kYXRhKCk7CisgICAgICAg
IGlmIChyZW1haW5kZXIgPj0gaW5wdXRCdXNMZW5ndGgpIHsKKyAgICAgICAgICAgIC8vIFRoZSBy
ZW1haW5kZXIgaXMgYmlnIGVub3VnaCBmb3IgdGhlIGlucHV0IGRhdGEuCisgICAgICAgICAgICBt
ZW1jcHkoZmlmb0J1c0NoYW5uZWwgKyBtX2luZGV4V3JpdGUsIGlucHV0QnVzQ2hhbm5lbCwgaW5w
dXRCdXNMZW5ndGggKiBzaXplb2YoKmZpZm9CdXNDaGFubmVsKSk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAvLyBUaGUgaW5wdXQgZGF0YSBvdmVyZmxvd3MgdGhlIHJlbWFpbmRlciBz
aXplLiBXcmFwIGFyb3VuZCB0aGUgaW5kZXguCisgICAgICAgICAgICBtZW1jcHkoZmlmb0J1c0No
YW5uZWwgKyBtX2luZGV4V3JpdGUsIGlucHV0QnVzQ2hhbm5lbCwgcmVtYWluZGVyICogc2l6ZW9m
KCpmaWZvQnVzQ2hhbm5lbCkpOworICAgICAgICAgICAgbWVtY3B5KGZpZm9CdXNDaGFubmVsLCBp
bnB1dEJ1c0NoYW5uZWwgKyByZW1haW5kZXIsIChpbnB1dEJ1c0xlbmd0aCAtIHJlbWFpbmRlcikg
KiBzaXplb2YoKmZpZm9CdXNDaGFubmVsKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBV
cGRhdGUgdGhlIHdyaXRlIGluZGV4OyB3cmFwIGl0IGFyb3VuZCBpZiBuZWNlc3NhcnkuCisgICAg
bV9pbmRleFdyaXRlID0gKG1faW5kZXhXcml0ZSArIGlucHV0QnVzTGVuZ3RoKSAlIG1fZmlmb0xl
bmd0aDsKKworICAgIC8vIEluIGNhc2Ugb2Ygb3ZlcmZsb3csIG1vdmUgdGhlIHxpbmRleFJlYWR8
IHRvIHRoZSB1cGRhdGVkIHxpbmRleFdyaXRlfCB0bworICAgIC8vIGF2b2lkIHJlYWRpbmcgb3Zl
cndyaXR0ZW4gZnJhbWVzIGJ5IHRoZSBuZXh0IHB1bGwuCisgICAgaWYgKGlucHV0QnVzTGVuZ3Ro
ID4gbV9maWZvTGVuZ3RoIC0gbV9mcmFtZXNBdmFpbGFibGUpCisgICAgICAgIG1faW5kZXhSZWFk
ID0gbV9pbmRleFdyaXRlOworCisgICAgLy8gVXBkYXRlIHRoZSBudW1iZXIgb2YgZnJhbWVzIGF2
YWlsYWJsZSBpbiBGSUZPLgorICAgIG1fZnJhbWVzQXZhaWxhYmxlID0gc3RkOjptaW4obV9mcmFt
ZXNBdmFpbGFibGUgKyBpbnB1dEJ1c0xlbmd0aCwgbV9maWZvTGVuZ3RoKTsKKyAgICBBU1NFUlQo
KChtX2luZGV4UmVhZCArIG1fZnJhbWVzQXZhaWxhYmxlKSAlIG1fZmlmb0xlbmd0aCkgPT0gbV9p
bmRleFdyaXRlKTsKK30KKworLy8gUHVsbCB0aGUgZGF0YSBvdXQgb2YgRklGTyB0byB8b3V0cHV0
QnVzfC4gSWYgcmVtYWluaW5nIGZyYW1lIGluIHRoZSBGSUZPCisvLyBpcyBsZXNzIHRoYW4gdGhl
IGZyYW1lcyB0byBwdWxsLCBwcm92aWRlcyByZW1haW5pbmcgZnJhbWUgcGx1cyB0aGUgc2lsZW5j
ZS4KK3NpemVfdCBQdXNoUHVsbEZJRk86OnB1bGwoQXVkaW9CdXMqIG91dHB1dEJ1cywgc2l6ZV90
IGZyYW1lc1JlcXVlc3RlZCkKK3sKKyAgICBBU1NFUlQob3V0cHV0QnVzKTsKKyAgICBBU1NFUlQo
ZnJhbWVzUmVxdWVzdGVkIDw9IG91dHB1dEJ1cy0+bGVuZ3RoKCkpOworICAgIEFTU0VSVChmcmFt
ZXNSZXF1ZXN0ZWQgPD0gbV9maWZvTGVuZ3RoKTsKKyAgICBBU1NFUlQobV9pbmRleFJlYWQgPCBt
X2ZpZm9MZW5ndGgpOworCisgICAgY29uc3Qgc2l6ZV90IHJlbWFpbmRlciA9IG1fZmlmb0xlbmd0
aCAtIG1faW5kZXhSZWFkOworICAgIGNvbnN0IHNpemVfdCBmcmFtZXNUb0ZpbGwgPSBzdGQ6Om1p
bihtX2ZyYW1lc0F2YWlsYWJsZSwgZnJhbWVzUmVxdWVzdGVkKTsKKworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX2ZpZm9CdXMtPm51bWJlck9mQ2hhbm5lbHMoKTsgKytpKSB7CisgICAg
ICAgIGNvbnN0IGZsb2F0KiBmaWZvQnVzQ2hhbm5lbCA9IG1fZmlmb0J1cy0+Y2hhbm5lbChpKS0+
ZGF0YSgpOworICAgICAgICBmbG9hdCogb3V0cHV0QnVzQ2hhbm5lbCA9IG91dHB1dEJ1cy0+Y2hh
bm5lbChpKS0+bXV0YWJsZURhdGEoKTsKKworICAgICAgICAvLyBGaWxsIHVwIHRoZSBvdXRwdXQg
YnVzIHdpdGggdGhlIGF2YWlsYWJsZSBmcmFtZXMgZmlyc3QuCisgICAgICAgIGlmIChyZW1haW5k
ZXIgPj0gZnJhbWVzVG9GaWxsKSB7CisgICAgICAgICAgICAvLyBUaGUgcmVtYWluZGVyIGlzIGJp
ZyBlbm91Z2ggZm9yIHRoZSBmcmFtZXMgdG8gcHVsbC4KKyAgICAgICAgICAgIG1lbWNweShvdXRw
dXRCdXNDaGFubmVsLCBmaWZvQnVzQ2hhbm5lbCArIG1faW5kZXhSZWFkLCBmcmFtZXNUb0ZpbGwg
KiBzaXplb2YoKmZpZm9CdXNDaGFubmVsKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAvLyBUaGUgZnJhbWVzIHRvIHB1bGwgaXMgYmlnZ2VyIHRoYW4gdGhlIHJlbWFpbmRlciBzaXpl
LgorICAgICAgICAgICAgLy8gV3JhcCBhcm91bmQgdGhlIGluZGV4LgorICAgICAgICAgICAgbWVt
Y3B5KG91dHB1dEJ1c0NoYW5uZWwsIGZpZm9CdXNDaGFubmVsICsgbV9pbmRleFJlYWQsIHJlbWFp
bmRlciAqIHNpemVvZigqZmlmb0J1c0NoYW5uZWwpKTsKKyAgICAgICAgICAgIG1lbWNweShvdXRw
dXRCdXNDaGFubmVsICsgcmVtYWluZGVyLCBmaWZvQnVzQ2hhbm5lbCwgKGZyYW1lc1RvRmlsbCAt
IHJlbWFpbmRlcikgKiBzaXplb2YoKmZpZm9CdXNDaGFubmVsKSk7CisgICAgICAgIH0KKworICAg
ICAgICAvLyBUaGUgZnJhbWVzIGF2YWlsYWJsZSB3YXMgbm90IGVub3VnaCB0byBmdWxmaWxsIHRo
ZSByZXF1ZXN0ZWQgZnJhbWVzLiBGaWxsCisgICAgICAgIC8vIHRoZSByZXN0IG9mIHRoZSBjaGFu
bmVsIHdpdGggc2lsZW5jZS4KKyAgICAgICAgaWYgKGZyYW1lc1JlcXVlc3RlZCA+IGZyYW1lc1Rv
RmlsbCkKKyAgICAgICAgICAgIG1lbXNldChvdXRwdXRCdXNDaGFubmVsICsgZnJhbWVzVG9GaWxs
LCAwLCAoZnJhbWVzUmVxdWVzdGVkIC0gZnJhbWVzVG9GaWxsKSAqIHNpemVvZigqb3V0cHV0QnVz
Q2hhbm5lbCkpOworICAgIH0KKworICAgIC8vIFVwZGF0ZSB0aGUgcmVhZCBpbmRleDsgd3JhcCBp
dCBhcm91bmQgaWYgbmVjZXNzYXJ5LgorICAgIG1faW5kZXhSZWFkID0gKG1faW5kZXhSZWFkICsg
ZnJhbWVzVG9GaWxsKSAlIG1fZmlmb0xlbmd0aDsKKworICAgIC8vIEluIGNhc2Ugb2YgdW5kZXJm
bG93LCBtb3ZlIHRoZSB8aW5kZXhXcml0ZXwgdG8gdGhlIHVwZGF0ZWQgfGluZGV4UmVhZHwuCisg
ICAgaWYgKGZyYW1lc1JlcXVlc3RlZCA+IGZyYW1lc1RvRmlsbCkKKyAgICAgICAgbV9pbmRleFdy
aXRlID0gbV9pbmRleFJlYWQ7CisKKyAgICAvLyBVcGRhdGUgdGhlIG51bWJlciBvZiBmcmFtZXMg
aW4gRklGTy4KKyAgICBtX2ZyYW1lc0F2YWlsYWJsZSAtPSBmcmFtZXNUb0ZpbGw7CisgICAgQVNT
RVJUKCgobV9pbmRleFJlYWQgKyBtX2ZyYW1lc0F2YWlsYWJsZSkgJSBtX2ZpZm9MZW5ndGgpID09
IG1faW5kZXhXcml0ZSk7CisKKyAgICAvLyB8ZnJhbWVzUmVxdWVzdGVkID4gbV9mcmFtZXNBdmFp
bGFibGV8IG1lYW5zIHRoZSBmcmFtZXMgaW4gRklGTyBpcyBub3QKKyAgICAvLyBlbm91Z2ggdG8g
ZnVsZmlsbCB0aGUgcmVxdWVzdGVkIGZyYW1lcyBmcm9tIHRoZSBhdWRpbyBkZXZpY2UuCisgICAg
cmV0dXJuIGZyYW1lc1JlcXVlc3RlZCA+IG1fZnJhbWVzQXZhaWxhYmxlID8gZnJhbWVzUmVxdWVz
dGVkIC0gbV9mcmFtZXNBdmFpbGFibGUgOiAwOworfQorCit1bnNpZ25lZCBQdXNoUHVsbEZJRk86
Om51bWJlck9mQ2hhbm5lbHMoKSBjb25zdAoreworICAgIHJldHVybiBtX2ZpZm9CdXMtPm51bWJl
ck9mQ2hhbm5lbHMoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1B1c2hQdWxsRklGTy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUHVzaFB1
bGxGSUZPLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uM2UzYzIzYTI4NDVjM2RjODIyZWZiMTc3NGVjZjNhNjE5ZjFi
YWIxMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1B1
c2hQdWxsRklGTy5oCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxNyBUaGUg
Q2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgQXVkaW9CdXM7CisKKy8vIFB1c2hQdWxsRklGTyBjbGFzcyBpcyBhbiBpbnRlcm1lZGlh
dGUgYXVkaW8gc2FtcGxlIHN0b3JhZ2UgYmV0d2VlbgorLy8gV2ViS2l0LVdlYkF1ZGlvIGFuZCB0
aGUgcmVuZGVyZXIuIFRoZSByZW5kZXJlcidzIGhhcmR3YXJlIGNhbGxiYWNrIGJ1ZmZlciBzaXpl
CisvLyB2YXJpZXMgb24gdGhlIHBsYXRmb3JtLCBidXQgdGhlIFdlYkF1ZGlvIGFsd2F5cyByZW5k
ZXJzIDEyOCBmcmFtZXMgKHJlbmRlcgorLy8gcXVhbnR1bSwgUlEpIHRodXMgRklGTyBpcyBuZWVk
ZWQgdG8gaGFuZGxlIHRoZSBnZW5lcmFsIGNhc2UuCitjbGFzcyBQdXNoUHVsbEZJRk8geworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFB1c2hQ
dWxsRklGTyk7CisKK3B1YmxpYzoKKyAgICAvLyBNYXhpbXVtIEZJRk8gbGVuZ3RoLiAoNTEyIHJl
bmRlciBxdWFudGEpCisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBrTWF4RklGT0xlbmd0aDsKKwor
ICAgIC8vIHxmaWZvTGVuZ3RofCBjYW5ub3QgZXhjZWVkIHxrTWF4RklGT0xlbmd0aHwuIE90aGVy
d2lzZSBpdCBjcmFzaGVzLgorICAgIFB1c2hQdWxsRklGTyh1bnNpZ25lZCBudW1iZXJPZkNoYW5u
ZWxzLCBzaXplX3QgZmlmb0xlbmd0aCk7CisgICAgflB1c2hQdWxsRklGTygpOworCisgICAgLy8g
UHVzaGVzIHRoZSByZW5kZXJlZCBmcmFtZXMgYnkgV2ViQXVkaW8gZW5naW5lLgorICAgIC8vICAt
IFRoZSB8aW5wdXRCdXN8IGxlbmd0aCBpcyAxMjggZnJhbWVzICgxIHJlbmRlciBxdWFudHVtKSwg
Zml4ZWQuCisgICAgLy8gIC0gSW4gY2FzZSBvZiBvdmVyZmxvdyAoRklGTyBmdWxsIHdoaWxlIHB1
c2gpLCB0aGUgZXhpc3RpbmcgZnJhbWVzIGluIEZJRk8KKyAgICAvLyAgICB3aWxsIGJlIG92ZXJ3
cml0dGVuIGFuZCB8aW5kZXhSZWFkfCB3aWxsIGJlIGZvcmNpYmx5IG1vdmVkIHRvCisgICAgLy8g
ICAgfGluZGV4V3JpdGV8IHRvIGF2b2lkIHJlYWRpbmcgb3ZlcndyaXR0ZW4gZnJhbWVzLgorICAg
IHZvaWQgcHVzaChjb25zdCBBdWRpb0J1cyogaW5wdXRCdXMpOworCisgICAgLy8gUHVsbHMgfGZy
YW1lc1JlcXVlc3RlZHwgYnkgdGhlIGF1ZGlvIGRldmljZSB0aHJlYWQgYW5kIHJldHVybnMgdGhl
IGFjdHVhbAorICAgIC8vIG51bWJlciBvZiBmcmFtZXMgdG8gYmUgcmVuZGVyZWQgYnkgdGhlIHNv
dXJjZS4gKGkuZS4gV2ViQXVkaW8gZ3JhcGgpCisgICAgc2l6ZV90IHB1bGwoQXVkaW9CdXMqIG91
dHB1dEJ1cywgc2l6ZV90IGZyYW1lc1JlcXVlc3RlZCk7CisKKyAgICBzaXplX3QgZnJhbWVzQXZh
aWxhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZXNBdmFpbGFibGU7IH0KKyAgICBzaXplX3Qg
bGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9maWZvTGVuZ3RoOyB9CisgICAgdW5zaWduZWQgbnVt
YmVyT2ZDaGFubmVscygpIGNvbnN0OworICAgIEF1ZGlvQnVzKiBidXMoKSBjb25zdCB7IHJldHVy
biBtX2ZpZm9CdXMuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICAvLyBUaGUgc2l6ZSBvZiB0aGUg
RklGTy4KKyAgICBjb25zdCBzaXplX3QgbV9maWZvTGVuZ3RoID0gMDsKKworICAgIFJlZlB0cjxB
dWRpb0J1cz4gbV9maWZvQnVzOworCisgICAgLy8gVGhlIG51bWJlciBvZiBmcmFtZXMgaW4gdGhl
IEZJRk8gYWN0dWFsbHkgYXZhaWxhYmxlIGZvciBwdWxsaW5nLgorICAgIHNpemVfdCBtX2ZyYW1l
c0F2YWlsYWJsZSB7IDAgfTsKKworICAgIHNpemVfdCBtX2luZGV4UmVhZCB7IDAgfTsKKyAgICBz
aXplX3QgbV9pbmRleFdyaXRlIHsgMCB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5jcHAK
aW5kZXggNTIwNTI3YjU0YmE1Nzg2ZDhjZWJkZmFiNTNhNDU2OGE5M2RlNmVkOC4uMjY1MWM0ODcw
OTU3NGQ5ODIzY2ZkZmU2OWU4NWQ3MDY4MmVkMDM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5jcHAKQEAgLTM5LDUxICszOSwxMTMgQEAKICNp
bmNsdWRlIDxlbW1pbnRyaW4uaD4KICNlbmRpZgogCi0vLyBJbnB1dCBidWZmZXIgbGF5b3V0LCBk
aXZpZGluZyB0aGUgdG90YWwgYnVmZmVyIGludG8gcmVnaW9ucyAocjAgLSByNSk6CisvLyBJbml0
aWFsIGlucHV0IGJ1ZmZlciBsYXlvdXQsIGRpdmlkaW5nIGludG8gcmVnaW9ucyByMCB0byByNCAo
bm90ZTogcjAsIHIzCisvLyBhbmQgcjQgd2lsbCBtb3ZlIGFmdGVyIHRoZSBmaXJzdCBsb2FkKToK
IC8vCiAvLyB8LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS18CiAvLwot
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tTaXpl
ICsga2VybmVsU2l6ZSAvIDIgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy8vICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcmVxdWVzdEZyYW1lcwogLy8g
ICAgICAgICAgICAgICAgICAgPC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPgotLy8gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIwCisvLyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByMCAoZHVyaW5nIGZpcnN0IGxvYWQpCiAv
LwogLy8gICBrZXJuZWxTaXplIC8gMiAgIGtlcm5lbFNpemUgLyAyICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAga2VybmVsU2l6ZSAvIDIgICAgIGtlcm5lbFNpemUgLyAyIAogLy8gPC0t
LS0tLS0tLS0tLS0tLT4gPC0tLS0tLS0tLS0tLS0tLT4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8LS0tLS0tLS0tLS0tLS0tPiA8LS0tLS0tLS0tLS0tLS0tPgogLy8gICAgICAgICByMSAg
ICAgICAgICAgICAgICByMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHIzICAgICAgICAgICAgICAgIHI0CiAvLyAKLS8vICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJsb2NrU2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAg
IAotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPgotLy8gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHI1CisvLyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9ibG9ja1NpemUgPT0gcjQgLSByMgorLy8gICAgICAg
ICAgICAgICAgICAgPC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4KKy8v
CisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9y
ZXF1ZXN0RnJhbWVzCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwtLS0t
LS0tLS0tLS0tLS0tLS0gLi4uIC0tLS0tLS0tLS0tLS0tLS0tPgorLy8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIwIChkdXJpbmcgc2Vjb25kIGxvYWQpCisv
LworLy8gT24gdGhlIHNlY29uZCByZXF1ZXN0IHIwIHNsaWRlcyB0byB0aGUgcmlnaHQgYnkga2Vy
bmVsU2l6ZSAvIDIgYW5kIHIzLCByNAorLy8gYW5kIG1fYmxvY2tTaXplIGFyZSByZWluaXRpYWxp
emVkIHZpYSBzdGVwICgzKSBpbiB0aGUgYWxnb3JpdGhtIGJlbG93LgorLy8KKy8vIFRoZXNlIG5l
dyByZWdpb25zIHJlbWFpbiBjb25zdGFudCB1bnRpbCBhIEZsdXNoKCkgb2NjdXJzLiBXaGlsZSBj
b21wbGljYXRlZCwKKy8vIHRoaXMgYWxsb3dzIHVzIHRvIHJlZHVjZSBqaXR0ZXIgYnkgYWx3YXlz
IHJlcXVlc3RpbmcgdGhlIHNhbWUgYW1vdW50IGZyb20gdGhlCisvLyBwcm92aWRlZCBjYWxsYmFj
ay4KIAogLy8gVGhlIEFsZ29yaXRobToKIC8vCi0vLyAxKSBDb25zdW1lIGlucHV0IGZyYW1lcyBp
bnRvIHIwIChyMSBpcyB6ZXJvLWluaXRpYWxpemVkKS4KLS8vIDIpIFBvc2l0aW9uIGtlcm5lbCBj
ZW50ZXJlZCBhdCBzdGFydCBvZiByMCAocjIpIGFuZCBnZW5lcmF0ZSBvdXRwdXQgZnJhbWVzIHVu
dGlsIGtlcm5lbCBpcyBjZW50ZXJlZCBhdCBzdGFydCBvZiByNC4KLS8vICAgIG9yIHdlJ3ZlIGZp
bmlzaGVkIGdlbmVyYXRpbmcgYWxsIHRoZSBvdXRwdXQgZnJhbWVzLgotLy8gMykgQ29weSByMyB0
byByMSBhbmQgcjQgdG8gcjIuCi0vLyA0KSBDb25zdW1lIGlucHV0IGZyYW1lcyBpbnRvIHI1ICh6
ZXJvLXBhZCBpZiB3ZSBydW4gb3V0IG9mIGlucHV0KS4KLS8vIDUpIEdvdG8gKDIpIHVudGlsIGFs
bCBvZiBpbnB1dCBpcyBjb25zdW1lZC4KKy8vIDEpIEFsbG9jYXRlIGlucHV0X2J1ZmZlciBvZiBz
aXplOiBtX3JlcXVlc3RGcmFtZXMgKyBrZXJuZWxTaXplOyB0aGlzIGVuc3VyZXMKKy8vICAgIHRo
ZXJlJ3MgZW5vdWdoIHJvb20gdG8gcmVhZCBtX3JlcXVlc3RGcmFtZXMgZnJvbSB0aGUgY2FsbGJh
Y2sgaW50byByZWdpb24KKy8vICAgIHIwICh3aGljaCB3aWxsIG1vdmUgYmV0d2VlbiB0aGUgZmly
c3QgYW5kIHN1YnNlcXVlbnQgcGFzc2VzKS4KKy8vCisvLyAyKSBMZXQgcjEsIHIyIGVhY2ggcmVw
cmVzZW50IGhhbGYgdGhlIGtlcm5lbCBjZW50ZXJlZCBhcm91bmQgcjA6CisvLworLy8gICAgICAg
IHIwID0gbV9pbnB1dEJ1ZmZlciArIGtlcm5lbFNpemUgLyAyCisvLyAgICAgICAgcjEgPSBtX2lu
cHV0QnVmZmVyCisvLyAgICAgICAgcjIgPSByMAorLy8KKy8vICAgIHIwIGlzIGFsd2F5cyBtX3Jl
cXVlc3RGcmFtZXMgaW4gc2l6ZS4gcjEsIHIyIGFyZSBrZXJuZWxTaXplIC8gMiBpbgorLy8gICAg
c2l6ZS4gcjEgbXVzdCBiZSB6ZXJvIGluaXRpYWxpemVkIHRvIGF2b2lkIGNvbnZvbHV0aW9uIHdp
dGggZ2FyYmFnZSAoc2VlCisvLyAgICBzdGVwICg1KSBmb3Igd2h5KS4KKy8vCisvLyAzKSBMZXQg
cjMsIHI0IGVhY2ggcmVwcmVzZW50IGhhbGYgdGhlIGtlcm5lbCByaWdodCBhbGlnbmVkIHdpdGgg
dGhlIGVuZCBvZgorLy8gICAgcjAgYW5kIGNob29zZSBtX2Jsb2NrU2l6ZSBhcyB0aGUgZGlzdGFu
Y2UgaW4gZnJhbWVzIGJldHdlZW4gcjQgYW5kIHIyOgorLy8KKy8vICAgICAgICByMyA9IHIwICsg
bV9yZXF1ZXN0RnJhbWVzIC0ga2VybmVsU2l6ZQorLy8gICAgICAgIHI0ID0gcjAgKyBtX3JlcXVl
c3RGcmFtZXMgLSBrZXJuZWxTaXplIC8gMgorLy8gICAgICAgIG1fYmxvY2tTaXplID0gcjQgLSBy
MiA9IG1fcmVxdWVzdEZyYW1lcyAtIGtlcm5lbFNpemUgLyAyCisvLworLy8gNCkgQ29uc3VtZSBt
X3JlcXVlc3RGcmFtZXMgZnJhbWVzIGludG8gcjAuCisvLworLy8gNSkgUG9zaXRpb24ga2VybmVs
IGNlbnRlcmVkIGF0IHN0YXJ0IG9mIHIyIGFuZCBnZW5lcmF0ZSBvdXRwdXQgZnJhbWVzIHVudGls
CisvLyAgICB0aGUga2VybmVsIGlzIGNlbnRlcmVkIGF0IHRoZSBzdGFydCBvZiByNCBvciB3ZSd2
ZSBmaW5pc2hlZCBnZW5lcmF0aW5nCisvLyAgICBhbGwgdGhlIG91dHB1dCBmcmFtZXMuCisvLwor
Ly8gNikgV3JhcCBsZWZ0IG92ZXIgZGF0YSBmcm9tIHRoZSByMyB0byByMSBhbmQgcjQgdG8gcjIu
CisvLworLy8gNykgSWYgd2UncmUgb24gdGhlIHNlY29uZCBsb2FkLCBpbiBvcmRlciB0byBhdm9p
ZCBvdmVyd3JpdGluZyB0aGUgZnJhbWVzIHdlCisvLyAgICBqdXN0IHdyYXBwZWQgZnJvbSByNCB3
ZSBuZWVkIHRvIHNsaWRlIHIwIHRvIHRoZSByaWdodCBieSB0aGUgc2l6ZSBvZgorLy8gICAgcjQs
IHdoaWNoIGlzIGtlcm5lbFNpemUgLyAyOgorLy8KKy8vICAgICAgICByMCA9IHIwICsga2VybmVs
U2l6ZSAvIDIgPSBtX2lucHV0QnVmZmVyICsga2VybmVsU2l6ZQorLy8KKy8vICAgIHIzLCByNCwg
YW5kIG1fYmxvY2tTaXplIHRoZW4gbmVlZCB0byBiZSByZWluaXRpYWxpemVkLCBzbyBnb3RvICgz
KS4KKy8vCisvLyA4KSBFbHNlLCBpZiB3ZSdyZSBub3Qgb24gdGhlIHNlY29uZCBsb2FkLCBnb3Rv
ICg0KS4KIC8vCiAvLyBub3RlOiB3ZSdyZSBnbG9zc2luZyBvdmVyIGhvdyB0aGUgc3ViLXNhbXBs
ZSBoYW5kbGluZyB3b3JrcyB3aXRoIG1fdmlydHVhbFNvdXJjZUluZGV4LCBldGMuCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotU2luY1Jlc2FtcGxlcjo6U2luY1Jlc2FtcGxlcihkb3VibGUgc2Nh
bGVGYWN0b3IsIHVuc2lnbmVkIGtlcm5lbFNpemUsIHVuc2lnbmVkIG51bWJlck9mS2VybmVsT2Zm
c2V0cykKK2NvbnN0ZXhwciB1bnNpZ25lZCBkZWZhdWx0UmVxdWVzdEZyYW1lcyB7IDUxMiB9Owor
Y29uc3RleHByIHVuc2lnbmVkIGtlcm5lbFNpemUgeyAzMiB9OworY29uc3RleHByIHVuc2lnbmVk
IG51bWJlck9mS2VybmVsT2Zmc2V0cyB7IDMyIH07CisKK1NpbmNSZXNhbXBsZXI6OlNpbmNSZXNh
bXBsZXIoZG91YmxlIHNjYWxlRmFjdG9yLCBPcHRpb25hbDx1bnNpZ25lZD4gcmVxdWVzdEZyYW1l
cykKICAgICA6IG1fc2NhbGVGYWN0b3Ioc2NhbGVGYWN0b3IpCi0gICAgLCBtX2tlcm5lbFNpemUo
a2VybmVsU2l6ZSkKLSAgICAsIG1fbnVtYmVyT2ZLZXJuZWxPZmZzZXRzKG51bWJlck9mS2VybmVs
T2Zmc2V0cykKLSAgICAsIG1fa2VybmVsU3RvcmFnZShtX2tlcm5lbFNpemUgKiAobV9udW1iZXJP
Zktlcm5lbE9mZnNldHMgKyAxKSkKLSAgICAsIG1fdmlydHVhbFNvdXJjZUluZGV4KDApCi0gICAg
LCBtX2Jsb2NrU2l6ZSg1MTIpCi0gICAgLCBtX2lucHV0QnVmZmVyKG1fYmxvY2tTaXplICsgbV9r
ZXJuZWxTaXplKSAvLyBTZWUgaW5wdXQgYnVmZmVyIGxheW91dCBhYm92ZS4KLSAgICAsIG1fc291
cmNlKDApCi0gICAgLCBtX3NvdXJjZUZyYW1lc0F2YWlsYWJsZSgwKQotICAgICwgbV9zb3VyY2VQ
cm92aWRlcigwKQotICAgICwgbV9pc0J1ZmZlclByaW1lZChmYWxzZSkKKyAgICAsIG1fa2VybmVs
U3RvcmFnZShrZXJuZWxTaXplICogKG51bWJlck9mS2VybmVsT2Zmc2V0cyArIDEpKQorICAgICwg
bV9yZXF1ZXN0RnJhbWVzKHJlcXVlc3RGcmFtZXMudmFsdWVPcihkZWZhdWx0UmVxdWVzdEZyYW1l
cykpCisgICAgLCBtX2lucHV0QnVmZmVyKG1fcmVxdWVzdEZyYW1lcyArIGtlcm5lbFNpemUpIC8v
IFNlZSBpbnB1dCBidWZmZXIgbGF5b3V0IGFib3ZlLgorICAgICwgbV9yMShtX2lucHV0QnVmZmVy
LmRhdGEoKSkKKyAgICAsIG1fcjIobV9pbnB1dEJ1ZmZlci5kYXRhKCkgKyBrZXJuZWxTaXplIC8g
MikKIHsKKyAgICBBU1NFUlQobV9yZXF1ZXN0RnJhbWVzID4gMCk7CisgICAgdXBkYXRlUmVnaW9u
cyhmYWxzZSk7CisgICAgQVNTRVJUKG1fYmxvY2tTaXplID4ga2VybmVsU2l6ZSk7CiAgICAgaW5p
dGlhbGl6ZUtlcm5lbCgpOwogfQogCit2b2lkIFNpbmNSZXNhbXBsZXI6OnVwZGF0ZVJlZ2lvbnMo
Ym9vbCBpc1NlY29uZExvYWQpCit7CisgICAgLy8gU2V0dXAgdmFyaW91cyByZWdpb24gcG9pbnRl
cnMgaW4gdGhlIGJ1ZmZlciAoc2VlIGRpYWdyYW0gYWJvdmUpLiBJZiB3ZSdyZQorICAgIC8vIG9u
IHRoZSBzZWNvbmQgbG9hZCB3ZSBuZWVkIHRvIHNsaWRlIG1fcjAgdG8gdGhlIHJpZ2h0IGJ5IGtl
cm5lbFNpemUgLyAyLgorICAgIG1fcjAgPSBtX2lucHV0QnVmZmVyLmRhdGEoKSArIChpc1NlY29u
ZExvYWQgPyBrZXJuZWxTaXplIDoga2VybmVsU2l6ZSAvIDIpOworICAgIG1fcjMgPSBtX3IwICsg
bV9yZXF1ZXN0RnJhbWVzIC0ga2VybmVsU2l6ZTsKKyAgICBtX3I0ID0gbV9yMCArIG1fcmVxdWVz
dEZyYW1lcyAtIGtlcm5lbFNpemUgLyAyOworICAgIG1fYmxvY2tTaXplID0gbV9yNCAtIG1fcjI7
CisKKyAgICAvLyBtX3IxIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGJ1ZmZlci4KKyAgICBBU1NF
UlQobV9yMSA9PSBtX2lucHV0QnVmZmVyLmRhdGEoKSk7CisgICAgLy8gbV9yMSBsZWZ0IG9mIG1f
cjIsIG1fcjQgbGVmdCBvZiBtX3IzIGFuZCBzaXplIGNvcnJlY3QuCisgICAgQVNTRVJUKChtX3Iy
IC0gbV9yMSkgPT0gKG1fcjQgLSBtX3IzKSk7CisgICAgLy8gbV9yMiBsZWZ0IG9mIHIzLgorICAg
IEFTU0VSVChtX3IyIDw9IG1fcjMpOworfQorCiB2b2lkIFNpbmNSZXNhbXBsZXI6OmluaXRpYWxp
emVLZXJuZWwoKQogewogICAgIC8vIEJsYWNrbWFuIHdpbmRvdyBwYXJhbWV0ZXJzLgpAQCAtOTgs
MTYgKzE2MCwxNiBAQCB2b2lkIFNpbmNSZXNhbXBsZXI6OmluaXRpYWxpemVLZXJuZWwoKQogICAg
IC8vIFRoZSBzaW5jIGZ1bmN0aW9uIGlzIGFuIGlkZWFsaXplZCBicmljay13YWxsIGZpbHRlciwg
YnV0IHNpbmNlIHdlJ3JlIHdpbmRvd2luZyBpdCB0aGUKICAgICAvLyB0cmFuc2l0aW9uIGZyb20g
cGFzcyB0byBzdG9wIGRvZXMgbm90IGhhcHBlbiByaWdodCBhd2F5LiBTbyB3ZSBzaG91bGQgYWRq
dXN0IHRoZQogICAgIC8vIGxvd3Bhc3MgZmlsdGVyIGN1dG9mZiBzbGlnaHRseSBkb3dud2FyZCB0
byBhdm9pZCBzb21lIGFsaWFzaW5nIGF0IHRoZSB2ZXJ5IGhpZ2gtZW5kLgotICAgIC8vIEZJWE1F
OiB0aGlzIHZhbHVlIGlzIGVtcGlyaWNhbCBhbmQgdG8gYmUgbW9yZSBleGFjdCBzaG91bGQgdmFy
eSBkZXBlbmRpbmcgb24gbV9rZXJuZWxTaXplLgorICAgIC8vIEZJWE1FOiB0aGlzIHZhbHVlIGlz
IGVtcGlyaWNhbCBhbmQgdG8gYmUgbW9yZSBleGFjdCBzaG91bGQgdmFyeSBkZXBlbmRpbmcgb24g
a2VybmVsU2l6ZS4KICAgICBzaW5jU2NhbGVGYWN0b3IgKj0gMC45OwogCi0gICAgaW50IG4gPSBt
X2tlcm5lbFNpemU7CisgICAgaW50IG4gPSBrZXJuZWxTaXplOwogICAgIGludCBoYWxmU2l6ZSA9
IG4gLyAyOwogCiAgICAgLy8gR2VuZXJhdGVzIGEgc2V0IG9mIHdpbmRvd2VkIHNpbmMoKSBrZXJu
ZWxzLgogICAgIC8vIFdlIGdlbmVyYXRlIGEgcmFuZ2Ugb2Ygc3ViLXNhbXBsZSBvZmZzZXRzIGZy
b20gMC4wIHRvIDEuMC4KLSAgICBmb3IgKHVuc2lnbmVkIG9mZnNldEluZGV4ID0gMDsgb2Zmc2V0
SW5kZXggPD0gbV9udW1iZXJPZktlcm5lbE9mZnNldHM7ICsrb2Zmc2V0SW5kZXgpIHsKLSAgICAg
ICAgZG91YmxlIHN1YnNhbXBsZU9mZnNldCA9IHN0YXRpY19jYXN0PGRvdWJsZT4ob2Zmc2V0SW5k
ZXgpIC8gbV9udW1iZXJPZktlcm5lbE9mZnNldHM7CisgICAgZm9yICh1bnNpZ25lZCBvZmZzZXRJ
bmRleCA9IDA7IG9mZnNldEluZGV4IDw9IG51bWJlck9mS2VybmVsT2Zmc2V0czsgKytvZmZzZXRJ
bmRleCkgeworICAgICAgICBkb3VibGUgc3Vic2FtcGxlT2Zmc2V0ID0gc3RhdGljX2Nhc3Q8ZG91
YmxlPihvZmZzZXRJbmRleCkgLyBudW1iZXJPZktlcm5lbE9mZnNldHM7CiAKICAgICAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBuOyArK2kpIHsKICAgICAgICAgICAgIC8vIENvbXB1dGUgdGhlIHNp
bmMoKSB3aXRoIG9mZnNldC4KQEAgLTEyMCw3ICsxODIsNyBAQCB2b2lkIFNpbmNSZXNhbXBsZXI6
OmluaXRpYWxpemVLZXJuZWwoKQogICAgICAgICAgICAgZG91YmxlIHdpbmRvdyA9IGEwIC0gYTEg
KiBjb3MoMi4wICogcGlEb3VibGUgKiB4KSArIGEyICogY29zKDQuMCAqIHBpRG91YmxlICogeCk7
CiAKICAgICAgICAgICAgIC8vIFdpbmRvdyB0aGUgc2luYygpIGZ1bmN0aW9uIGFuZCBzdG9yZSBh
dCB0aGUgY29ycmVjdCBvZmZzZXQuCi0gICAgICAgICAgICBtX2tlcm5lbFN0b3JhZ2VbaSArIG9m
ZnNldEluZGV4ICogbV9rZXJuZWxTaXplXSA9IHNpbmMgKiB3aW5kb3c7CisgICAgICAgICAgICBt
X2tlcm5lbFN0b3JhZ2VbaSArIG9mZnNldEluZGV4ICoga2VybmVsU2l6ZV0gPSBzaW5jICogd2lu
ZG93OwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTkwLDcgKzI1Miw3IEBAIHZvaWQgU2luY1Jl
c2FtcGxlcjo6cHJvY2Vzcyhjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24s
IHVuc2lnbmVkIG51CiAgICAgdW5zaWduZWQgcmVtYWluaW5nID0gbnVtYmVyT2ZEZXN0aW5hdGlv
bkZyYW1lczsKICAgICAKICAgICB3aGlsZSAocmVtYWluaW5nKSB7Ci0gICAgICAgIHVuc2lnbmVk
IGZyYW1lc1RoaXNUaW1lID0gc3RkOjptaW4ocmVtYWluaW5nLCBtX2Jsb2NrU2l6ZSk7CisgICAg
ICAgIHVuc2lnbmVkIGZyYW1lc1RoaXNUaW1lID0gc3RkOjptaW4ocmVtYWluaW5nLCBtX3JlcXVl
c3RGcmFtZXMpOwogICAgICAgICBwcm9jZXNzKCZzb3VyY2VQcm92aWRlciwgZGVzdGluYXRpb24s
IGZyYW1lc1RoaXNUaW1lKTsKICAgICAgICAgCiAgICAgICAgIGRlc3RpbmF0aW9uICs9IGZyYW1l
c1RoaXNUaW1lOwpAQCAtMjAwLDI3ICsyNjIsMTggQEAgdm9pZCBTaW5jUmVzYW1wbGVyOjpwcm9j
ZXNzKGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgbnUK
IAogdm9pZCBTaW5jUmVzYW1wbGVyOjpwcm9jZXNzKEF1ZGlvU291cmNlUHJvdmlkZXIqIHNvdXJj
ZVByb3ZpZGVyLCBmbG9hdCogZGVzdGluYXRpb24sIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7
Ci0gICAgYm9vbCBpc0dvb2QgPSBzb3VyY2VQcm92aWRlciAmJiBtX2Jsb2NrU2l6ZSA+IG1fa2Vy
bmVsU2l6ZSAmJiBtX2lucHV0QnVmZmVyLnNpemUoKSA+PSBtX2Jsb2NrU2l6ZSArIG1fa2VybmVs
U2l6ZSAmJiAhKG1fa2VybmVsU2l6ZSAlIDIpOwotICAgIEFTU0VSVChpc0dvb2QpOwotICAgIGlm
ICghaXNHb29kKQorICAgIEFTU0VSVChzb3VyY2VQcm92aWRlcik7CisgICAgaWYgKCFzb3VyY2VQ
cm92aWRlcikKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIG1fc291cmNlUHJvdmlkZXIgPSBz
b3VyY2VQcm92aWRlcjsKIAogICAgIHVuc2lnbmVkIG51bWJlck9mRGVzdGluYXRpb25GcmFtZXMg
PSBmcmFtZXNUb1Byb2Nlc3M7Ci0gICAgCi0gICAgLy8gU2V0dXAgdmFyaW91cyByZWdpb24gcG9p
bnRlcnMgaW4gdGhlIGJ1ZmZlciAoc2VlIGRpYWdyYW0gYWJvdmUpLgotICAgIGZsb2F0KiByMCA9
IG1faW5wdXRCdWZmZXIuZGF0YSgpICsgbV9rZXJuZWxTaXplIC8gMjsKLSAgICBmbG9hdCogcjEg
PSBtX2lucHV0QnVmZmVyLmRhdGEoKTsKLSAgICBmbG9hdCogcjIgPSByMDsKLSAgICBmbG9hdCog
cjMgPSByMCArIG1fYmxvY2tTaXplIC0gbV9rZXJuZWxTaXplIC8gMjsKLSAgICBmbG9hdCogcjQg
PSByMCArIG1fYmxvY2tTaXplOwotICAgIGZsb2F0KiByNSA9IHIwICsgbV9rZXJuZWxTaXplIC8g
MjsKIAogICAgIC8vIFN0ZXAgKDEpCiAgICAgLy8gUHJpbWUgdGhlIGlucHV0IGJ1ZmZlciBhdCB0
aGUgc3RhcnQgb2YgdGhlIGlucHV0IHN0cmVhbS4KICAgICBpZiAoIW1faXNCdWZmZXJQcmltZWQp
IHsKLSAgICAgICAgY29uc3VtZVNvdXJjZShyMCwgbV9ibG9ja1NpemUgKyBtX2tlcm5lbFNpemUg
LyAyKTsKKyAgICAgICAgY29uc3VtZVNvdXJjZShtX3IwLCBtX3JlcXVlc3RGcmFtZXMpOwogICAg
ICAgICBtX2lzQnVmZmVyUHJpbWVkID0gdHJ1ZTsKICAgICB9CiAgICAgCkBAIC0yMzIsMTQgKzI4
NSwxNCBAQCB2b2lkIFNpbmNSZXNhbXBsZXI6OnByb2Nlc3MoQXVkaW9Tb3VyY2VQcm92aWRlciog
c291cmNlUHJvdmlkZXIsIGZsb2F0KiBkZXN0aW5hdAogICAgICAgICAgICAgaW50IHNvdXJjZUlu
ZGV4SSA9IHN0YXRpY19jYXN0PGludD4obV92aXJ0dWFsU291cmNlSW5kZXgpOwogICAgICAgICAg
ICAgZG91YmxlIHN1YnNhbXBsZVJlbWFpbmRlciA9IG1fdmlydHVhbFNvdXJjZUluZGV4IC0gc291
cmNlSW5kZXhJOwogCi0gICAgICAgICAgICBkb3VibGUgdmlydHVhbE9mZnNldEluZGV4ID0gc3Vi
c2FtcGxlUmVtYWluZGVyICogbV9udW1iZXJPZktlcm5lbE9mZnNldHM7CisgICAgICAgICAgICBk
b3VibGUgdmlydHVhbE9mZnNldEluZGV4ID0gc3Vic2FtcGxlUmVtYWluZGVyICogbnVtYmVyT2ZL
ZXJuZWxPZmZzZXRzOwogICAgICAgICAgICAgaW50IG9mZnNldEluZGV4ID0gc3RhdGljX2Nhc3Q8
aW50Pih2aXJ0dWFsT2Zmc2V0SW5kZXgpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBmbG9h
dCogazEgPSBtX2tlcm5lbFN0b3JhZ2UuZGF0YSgpICsgb2Zmc2V0SW5kZXggKiBtX2tlcm5lbFNp
emU7Ci0gICAgICAgICAgICBmbG9hdCogazIgPSBrMSArIG1fa2VybmVsU2l6ZTsKKyAgICAgICAg
ICAgIGZsb2F0KiBrMSA9IG1fa2VybmVsU3RvcmFnZS5kYXRhKCkgKyBvZmZzZXRJbmRleCAqIGtl
cm5lbFNpemU7CisgICAgICAgICAgICBmbG9hdCogazIgPSBrMSArIGtlcm5lbFNpemU7CiAKICAg
ICAgICAgICAgIC8vIEluaXRpYWxpemUgaW5wdXQgcG9pbnRlciBiYXNlZCBvbiBxdWFudGl6ZWQg
bV92aXJ0dWFsU291cmNlSW5kZXguCi0gICAgICAgICAgICBmbG9hdCogaW5wdXRQID0gcjEgKyBz
b3VyY2VJbmRleEk7CisgICAgICAgICAgICBmbG9hdCogaW5wdXRQID0gbV9yMSArIHNvdXJjZUlu
ZGV4STsKIAogICAgICAgICAgICAgLy8gV2UnbGwgY29tcHV0ZSAiY29udm9sdXRpb25zIiBmb3Ig
dGhlIHR3byBrZXJuZWxzIHdoaWNoIHN0cmFkZGxlIG1fdmlydHVhbFNvdXJjZUluZGV4CiAgICAg
ICAgICAgICBmbG9hdCBzdW0xID0gMDsKQEAgLTI0OSw3ICszMDIsNyBAQCB2b2lkIFNpbmNSZXNh
bXBsZXI6OnByb2Nlc3MoQXVkaW9Tb3VyY2VQcm92aWRlciogc291cmNlUHJvdmlkZXIsIGZsb2F0
KiBkZXN0aW5hdAogICAgICAgICAgICAgZG91YmxlIGtlcm5lbEludGVycG9sYXRpb25GYWN0b3Ig
PSB2aXJ0dWFsT2Zmc2V0SW5kZXggLSBvZmZzZXRJbmRleDsKIAogICAgICAgICAgICAgLy8gR2Vu
ZXJhdGUgYSBzaW5nbGUgb3V0cHV0IHNhbXBsZS4gCi0gICAgICAgICAgICBpbnQgbiA9IG1fa2Vy
bmVsU2l6ZTsKKyAgICAgICAgICAgIGludCBuID0ga2VybmVsU2l6ZTsKIAogI2RlZmluZSBDT05W
T0xWRV9PTkVfU0FNUExFICAgICAgXAogICAgICAgICAgICAgaW5wdXQgPSAqaW5wdXRQKys7ICAg
XApAQCAtNDU1LDE2ICs1MDgsMjAgQEAgdm9pZCBTaW5jUmVzYW1wbGVyOjpwcm9jZXNzKEF1ZGlv
U291cmNlUHJvdmlkZXIqIHNvdXJjZVByb3ZpZGVyLCBmbG9hdCogZGVzdGluYXQKICAgICAgICAg
fQogCiAgICAgICAgIC8vIFdyYXAgYmFjayBhcm91bmQgdG8gdGhlIHN0YXJ0LgorICAgICAgICBB
U1NFUlQobV92aXJ0dWFsU291cmNlSW5kZXggPj0gbV9ibG9ja1NpemUpOwogICAgICAgICBtX3Zp
cnR1YWxTb3VyY2VJbmRleCAtPSBtX2Jsb2NrU2l6ZTsKIAotICAgICAgICAvLyBTdGVwICgzKSBD
b3B5IHIzIHRvIHIxIGFuZCByNCB0byByMi4KKyAgICAgICAgLy8gU3RlcCAoMykgQ29weSByMyB0
byByMS4KICAgICAgICAgLy8gVGhpcyB3cmFwcyB0aGUgbGFzdCBpbnB1dCBmcmFtZXMgYmFjayB0
byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4KLSAgICAgICAgbWVtY3B5KHIxLCByMywgc2l6ZW9m
KGZsb2F0KSAqIChtX2tlcm5lbFNpemUgLyAyKSk7Ci0gICAgICAgIG1lbWNweShyMiwgcjQsIHNp
emVvZihmbG9hdCkgKiAobV9rZXJuZWxTaXplIC8gMikpOworICAgICAgICBtZW1jcHkobV9yMSwg
bV9yMywgc2l6ZW9mKGZsb2F0KSAqIGtlcm5lbFNpemUpOworCisgICAgICAgIC8vIFN0ZXAgKDQp
IC0tIFJlaW5pdGlhbGl6ZSByZWdpb25zIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgaWYgKG1fcjAg
PT0gbV9yMikKKyAgICAgICAgICAgIHVwZGF0ZVJlZ2lvbnModHJ1ZSk7CiAKLSAgICAgICAgLy8g
U3RlcCAoNCkKKyAgICAgICAgLy8gU3RlcCAoNSkKICAgICAgICAgLy8gUmVmcmVzaCB0aGUgYnVm
ZmVyIHdpdGggbW9yZSBpbnB1dC4KLSAgICAgICAgY29uc3VtZVNvdXJjZShyNSwgbV9ibG9ja1Np
emUpOworICAgICAgICBjb25zdW1lU291cmNlKG1fcjAsIG1fcmVxdWVzdEZyYW1lcyk7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVz
YW1wbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmgK
aW5kZXggYjE2ZWI1MTMyNTg4ZGI1ZjFhOTE4NTU2MGNkZTk3ZDgxZGM0ZGEyNS4uOTNiZjA0ZDkw
ZjAyYjI3Yzc5NTllMWI5M2IzNjc0MmRkZmQ5N2M2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuaApAQCAtMzksMTEgKzM5LDEwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgU2luY1Jlc2FtcGxlciBmaW5hbCB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6ICAgCitwdWJsaWM6CiAgICAgLy8gc2NhbGVGYWN0b3Ig
PT0gc291cmNlU2FtcGxlUmF0ZSAvIGRlc3RpbmF0aW9uU2FtcGxlUmF0ZQotICAgIC8vIGtlcm5l
bFNpemUgY2FuIGJlIGFkanVzdGVkIGZvciBxdWFsaXR5IChoaWdoZXIgaXMgYmV0dGVyKQotICAg
IC8vIG51bWJlck9mS2VybmVsT2Zmc2V0cyBpcyB1c2VkIGZvciBpbnRlcnBvbGF0aW9uIGFuZCBp
cyB0aGUgbnVtYmVyIG9mIHN1Yi1zYW1wbGUga2VybmVsIHNoaWZ0cy4KLSAgICBTaW5jUmVzYW1w
bGVyKGRvdWJsZSBzY2FsZUZhY3RvciwgdW5zaWduZWQga2VybmVsU2l6ZSA9IDMyLCB1bnNpZ25l
ZCBudW1iZXJPZktlcm5lbE9mZnNldHMgPSAzMik7CisgICAgLy8gcmVxdWVzdEZyYW1lcyBjb250
cm9scyB0aGUgc2l6ZSBpbiBmcmFtZXMgb2YgdGhlIGJ1ZmZlciByZXF1ZXN0ZWQgYnkgZWFjaCBw
cm92aWRlSW5wdXQoKSBjYWxsLgorICAgIFNpbmNSZXNhbXBsZXIoZG91YmxlIHNjYWxlRmFjdG9y
LCBPcHRpb25hbDx1bnNpZ25lZD4gcmVxdWVzdEZyYW1lcyA9IFdURjo6bnVsbG9wdCk7CiAgICAg
CiAgICAgLy8gUHJvY2Vzc2VzIG51bWJlck9mU291cmNlRnJhbWVzIGZyb20gc291cmNlIHRvIHBy
b2R1Y2UgbnVtYmVyT2ZTb3VyY2VGcmFtZXMgLyBzY2FsZUZhY3RvciBmcmFtZXMgaW4gZGVzdGlu
YXRpb24uCiAgICAgdm9pZCBwcm9jZXNzKGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0
aW5hdGlvbiwgdW5zaWduZWQgbnVtYmVyT2ZTb3VyY2VGcmFtZXMpOwpAQCAtNTQsMTAgKzUzLDkg
QEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIHZvaWQgaW5pdGlhbGl6ZUtlcm5lbCgpOwogICAg
IHZvaWQgY29uc3VtZVNvdXJjZShmbG9hdCogYnVmZmVyLCB1bnNpZ25lZCBudW1iZXJPZlNvdXJj
ZUZyYW1lcyk7CisgICAgdm9pZCB1cGRhdGVSZWdpb25zKGJvb2wgaXNTZWNvbmRMb2FkKTsKICAg
ICAKICAgICBkb3VibGUgbV9zY2FsZUZhY3RvcjsKLSAgICB1bnNpZ25lZCBtX2tlcm5lbFNpemU7
Ci0gICAgdW5zaWduZWQgbV9udW1iZXJPZktlcm5lbE9mZnNldHM7CiAKICAgICAvLyBtX2tlcm5l
bFN0b3JhZ2UgaGFzIG1fbnVtYmVyT2ZLZXJuZWxPZmZzZXRzIGtlcm5lbHMgYmFjay10by1iYWNr
LCBlYWNoIG9mIHNpemUgbV9rZXJuZWxTaXplLgogICAgIC8vIFRoZSBrZXJuZWwgb2Zmc2V0cyBh
cmUgc3ViLXNhbXBsZSBzaGlmdHMgb2YgYSB3aW5kb3dlZCBzaW5jKCkgc2hpZnRlZCBmcm9tIDAu
MCB0byAxLjAgc2FtcGxlLgpAQCAtNjUsMjIgKzYzLDMzIEBAIHByb3RlY3RlZDoKICAgICAKICAg
ICAvLyBtX3ZpcnR1YWxTb3VyY2VJbmRleCBpcyBhbiBpbmRleCBvbiB0aGUgc291cmNlIGlucHV0
IGJ1ZmZlciB3aXRoIHN1Yi1zYW1wbGUgcHJlY2lzaW9uLgogICAgIC8vIEl0IG11c3QgYmUgZG91
YmxlIHByZWNpc2lvbiB0byBhdm9pZCBkcmlmdC4KLSAgICBkb3VibGUgbV92aXJ0dWFsU291cmNl
SW5kZXg7CisgICAgZG91YmxlIG1fdmlydHVhbFNvdXJjZUluZGV4IHsgMCB9OwogICAgIAogICAg
IC8vIFRoaXMgaXMgdGhlIG51bWJlciBvZiBkZXN0aW5hdGlvbiBmcmFtZXMgd2UgZ2VuZXJhdGUg
cGVyIHByb2Nlc3NpbmcgcGFzcyBvbiB0aGUgYnVmZmVyLgotICAgIHVuc2lnbmVkIG1fYmxvY2tT
aXplOworICAgIHVuc2lnbmVkIG1fcmVxdWVzdEZyYW1lczsKKworICAgIC8vIFRoZSBudW1iZXIg
b2Ygc291cmNlIGZyYW1lcyBwcm9jZXNzZWQgcGVyIHBhc3MuCisgICAgdW5zaWduZWQgbV9ibG9j
a1NpemUgeyAwIH07CiAKICAgICAvLyBTb3VyY2UgaXMgY29waWVkIGludG8gdGhpcyBidWZmZXIg
Zm9yIGVhY2ggcHJvY2Vzc2luZyBwYXNzLgogICAgIEF1ZGlvRmxvYXRBcnJheSBtX2lucHV0QnVm
ZmVyOwogCi0gICAgY29uc3QgZmxvYXQqIG1fc291cmNlOwotICAgIHVuc2lnbmVkIG1fc291cmNl
RnJhbWVzQXZhaWxhYmxlOworICAgIC8vIFBvaW50ZXJzIHRvIHRoZSB2YXJpb3VzIHJlZ2lvbnMg
aW5zaWRlIHxtX2lucHV0QnVmZmVyfC4gU2VlIHRoZSBkaWFncmFtIGF0CisgICAgLy8gdGhlIHRv
cCBvZiB0aGUgLmNwcCBmaWxlIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgIGZsb2F0KiBtX3Iw
IHsgbnVsbHB0ciB9OworICAgIGZsb2F0KiBjb25zdCBtX3IxIHsgbnVsbHB0ciB9OworICAgIGZs
b2F0KiBjb25zdCBtX3IyIHsgbnVsbHB0ciB9OworICAgIGZsb2F0KiBtX3IzIHsgbnVsbHB0ciB9
OworICAgIGZsb2F0KiBtX3I0IHsgbnVsbHB0ciB9OworCisgICAgY29uc3QgZmxvYXQqIG1fc291
cmNlIHsgbnVsbHB0ciB9OworICAgIHVuc2lnbmVkIG1fc291cmNlRnJhbWVzQXZhaWxhYmxlIHsg
MCB9OwogICAgIAogICAgIC8vIG1fc291cmNlUHJvdmlkZXIgaXMgdXNlZCB0byBwcm92aWRlIHRo
ZSBhdWRpbyBpbnB1dCBzdHJlYW0gdG8gdGhlIHJlc2FtcGxlci4KLSAgICBBdWRpb1NvdXJjZVBy
b3ZpZGVyKiBtX3NvdXJjZVByb3ZpZGVyOyAgICAKKyAgICBBdWRpb1NvdXJjZVByb3ZpZGVyKiBt
X3NvdXJjZVByb3ZpZGVyIHsgbnVsbHB0ciB9OwogCiAgICAgLy8gVGhlIGJ1ZmZlciBpcyBwcmlt
ZWQgb25jZSBhdCB0aGUgdmVyeSBiZWdpbm5pbmcgb2YgcHJvY2Vzc2luZy4KLSAgICBib29sIG1f
aXNCdWZmZXJQcmltZWQ7CisgICAgYm9vbCBtX2lzQnVmZmVyUHJpbWVkIHsgZmFsc2UgfTsKIAog
ICAgIFJlZlB0cjxBdWRpb0J1cz4gbV9pbnRlcm5hbEJ1czsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNv
Y29hLmNwcAppbmRleCBhZTYzNTBmYzExYTQ2OTQ3OGU4MGMwYmZjMzM3YzIwOGI4MzkzZTRlLi43
NzVkNjJkZThhZGU3OTk4MzdiNDA1YzlhNDE5NjgyNTRlZjVkMjM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRp
b25Db2NvYS5jcHAKQEAgLTI5LDEzICsyOSwxNiBAQAogI2lmIEVOQUJMRShXRUJfQVVESU8pCiAK
ICNpbmNsdWRlICJBdWRpb0J1cy5oIgotI2luY2x1ZGUgIkF1ZGlvSU9DYWxsYmFjay5oIgogI2lu
Y2x1ZGUgIkF1ZGlvU2Vzc2lvbi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJN
dWx0aUNoYW5uZWxSZXNhbXBsZXIuaCIKKyNpbmNsdWRlICJQdXNoUHVsbEZJRk8uaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jb25zdCBpbnQga1JlbmRlckJ1ZmZlclNpemUgPSAxMjg7Citj
b25zdGV4cHIgc2l6ZV90IGtSZW5kZXJCdWZmZXJTaXplID0gMTI4OworCitjb25zdGV4cHIgc2l6
ZV90IGZpZm9TaXplID0gOTYgKiBrUmVuZGVyQnVmZmVyU2l6ZTsKIAogQ3JlYXRlQXVkaW9EZXN0
aW5hdGlvbkNvY29hT3ZlcnJpZGUgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpjcmVhdGVPdmVycmlk
ZSA9IG51bGxwdHI7CiAKQEAgLTY4LDE0ICs3MSwyNCBAQCB1bnNpZ25lZCBsb25nIEF1ZGlvRGVz
dGluYXRpb246Om1heENoYW5uZWxDb3VudCgpCiAgICAgcmV0dXJuIEF1ZGlvU2Vzc2lvbjo6c2hh
cmVkU2Vzc2lvbigpLm1heGltdW1OdW1iZXJPZk91dHB1dENoYW5uZWxzKCk7CiB9CiAKKy8vIEZJ
WE1FOiBXZSBzaG91bGQgbm90IGJlIGhhcmRjb2RpbmcgdGhlIG51bWJlciBvZiBpbnB1dCBjaGFu
bmVscy4KK2NvbnN0ZXhwciB1bnNpZ25lZCBsZWdhY3lOdW1iZXJPZk91dHB1dENoYW5uZWxzIHsg
MiB9OworCiBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OkF1ZGlvRGVzdGluYXRpb25Db2NvYShBdWRp
b0lPQ2FsbGJhY2smIGNhbGxiYWNrLCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogbV9vdXRwdXRV
bml0KDApCiAgICAgLCBtX2NhbGxiYWNrKGNhbGxiYWNrKQotICAgICwgbV9yZW5kZXJCdXMoQXVk
aW9CdXM6OmNyZWF0ZSgyLCBrUmVuZGVyQnVmZmVyU2l6ZSwgZmFsc2UpLnJlbGVhc2VOb25OdWxs
KCkpCi0gICAgLCBtX3NwYXJlQnVzKEF1ZGlvQnVzOjpjcmVhdGUoMiwga1JlbmRlckJ1ZmZlclNp
emUsIHRydWUpLnJlbGVhc2VOb25OdWxsKCkpCi0gICAgLCBtX3NhbXBsZVJhdGUoc2FtcGxlUmF0
ZSkKKyAgICAsIG1fb3V0cHV0QnVzKEF1ZGlvQnVzOjpjcmVhdGUobGVnYWN5TnVtYmVyT2ZPdXRw
dXRDaGFubmVscywga1JlbmRlckJ1ZmZlclNpemUsIGZhbHNlKS5yZWxlYXNlTm9uTnVsbCgpKQor
ICAgICwgbV9yZW5kZXJCdXMoQXVkaW9CdXM6OmNyZWF0ZShsZWdhY3lOdW1iZXJPZk91dHB1dENo
YW5uZWxzLCBrUmVuZGVyQnVmZmVyU2l6ZSkucmVsZWFzZU5vbk51bGwoKSkKKyAgICAsIG1fZmlm
byhtYWtlVW5pcXVlUmVmPFB1c2hQdWxsRklGTz4obGVnYWN5TnVtYmVyT2ZPdXRwdXRDaGFubmVs
cywgZmlmb1NpemUpKQorICAgICwgbV9jb250ZXh0U2FtcGxlUmF0ZShzYW1wbGVSYXRlKQogewog
ICAgIGNvbmZpZ3VyZSgpOworCisgICAgYXV0byBoYXJkd2FyZVNhbXBsZVJhdGUgPSB0aGlzLT5o
YXJkd2FyZVNhbXBsZVJhdGUoKTsKKyAgICBpZiAoc2FtcGxlUmF0ZSAhPSBoYXJkd2FyZVNhbXBs
ZVJhdGUpIHsKKyAgICAgICAgZG91YmxlIHNjYWxlRmFjdG9yID0gc3RhdGljX2Nhc3Q8ZG91Ymxl
PihzYW1wbGVSYXRlKSAvIGhhcmR3YXJlU2FtcGxlUmF0ZTsKKyAgICAgICAgbV9yZXNhbXBsZXIg
PSBtYWtlVW5pcXVlPE11bHRpQ2hhbm5lbFJlc2FtcGxlcj4oc2NhbGVGYWN0b3IsIGxlZ2FjeU51
bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGtSZW5kZXJCdWZmZXJTaXplKTsKKyAgICB9CiB9CiAKIEF1
ZGlvRGVzdGluYXRpb25Db2NvYTo6fkF1ZGlvRGVzdGluYXRpb25Db2NvYSgpCkBAIC0xMTYsMTEg
KzEyOSwxMSBAQCB2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6c2V0SXNQbGF5aW5nKGJvb2wg
aXNQbGF5aW5nKQogICAgIG1fY2FsbGJhY2suaXNQbGF5aW5nRGlkQ2hhbmdlKCk7CiB9CiAKLXZv
aWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24o
QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiBzdHJlYW1Gb3JtYXQsIGZsb2F0IHNhbXBsZVJh
dGUpCit2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6c2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2Ny
aXB0aW9uKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYgc3RyZWFtRm9ybWF0KQogewogICAg
IGNvbnN0IGludCBieXRlc1BlckZsb2F0ID0gc2l6ZW9mKEZsb2F0MzIpOwogICAgIGNvbnN0IGlu
dCBiaXRzUGVyQnl0ZSA9IDg7Ci0gICAgc3RyZWFtRm9ybWF0Lm1TYW1wbGVSYXRlID0gc2FtcGxl
UmF0ZTsKKyAgICBzdHJlYW1Gb3JtYXQubVNhbXBsZVJhdGUgPSBoYXJkd2FyZVNhbXBsZVJhdGUo
KTsKICAgICBzdHJlYW1Gb3JtYXQubUZvcm1hdElEID0ga0F1ZGlvRm9ybWF0TGluZWFyUENNOwog
ICAgIHN0cmVhbUZvcm1hdC5tRm9ybWF0RmxhZ3MgPSBrQXVkaW9Gb3JtYXRGbGFnc05hdGl2ZUZs
b2F0UGFja2VkIHwga0F1ZGlvRm9ybWF0RmxhZ0lzTm9uSW50ZXJsZWF2ZWQ7CiAgICAgc3RyZWFt
Rm9ybWF0Lm1CeXRlc1BlclBhY2tldCA9IGJ5dGVzUGVyRmxvYXQ7CkBAIC0xNDMsNDQgKzE1Niwz
MSBAQCBzdGF0aWMgdm9pZCBhc3NpZ25BdWRpb0J1ZmZlcnNUb0J1cyhBdWRpb0J1ZmZlciogYnVm
ZmVycywgQXVkaW9CdXMmIGJ1cywgVUludDMyCiAvLyBQdWxscyBvbiBvdXIgcHJvdmlkZXIgdG8g
Z2V0IHJlbmRlcmVkIGF1ZGlvIHN0cmVhbS4KIE9TU3RhdHVzIEF1ZGlvRGVzdGluYXRpb25Db2Nv
YTo6cmVuZGVyKGNvbnN0IEF1ZGlvVGltZVN0YW1wKiB0aW1lc3RhbXAsIFVJbnQzMiBudW1iZXJP
ZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpCiB7Ci0gICAgQXVkaW9JT1Bvc2l0aW9u
IG91dHB1dFRpbWVzdGFtcDsKKyAgICBpZiAobV9maWZvLT5sZW5ndGgoKSA8IG51bWJlck9mRnJh
bWVzKQorICAgICAgICByZXR1cm4gbm9FcnI7CisKICAgICBpZiAodGltZXN0YW1wKSB7Ci0gICAg
ICAgIG91dHB1dFRpbWVzdGFtcCA9IHsKLSAgICAgICAgICAgIFNlY29uZHMgeyB0aW1lc3RhbXAt
Pm1TYW1wbGVUaW1lIC8gbV9zYW1wbGVSYXRlIH0sCisgICAgICAgIG1fb3V0cHV0VGltZXN0YW1w
ID0geworICAgICAgICAgICAgU2Vjb25kcyB7IHRpbWVzdGFtcC0+bVNhbXBsZVRpbWUgLyBzYW1w
bGVSYXRlKCkgfSwKICAgICAgICAgICAgIE1vbm90b25pY1RpbWU6OmZyb21NYWNoQWJzb2x1dGVU
aW1lKHRpbWVzdGFtcC0+bUhvc3RUaW1lKQogICAgICAgICB9OwotICAgIH0KKyAgICB9IGVsc2UK
KyAgICAgICAgbV9vdXRwdXRUaW1lc3RhbXAgPSBBdWRpb0lPUG9zaXRpb24geyB9OworCiAgICAg
YXV0byogYnVmZmVycyA9IGlvRGF0YS0+bUJ1ZmZlcnM7CiAgICAgVUludDMyIG51bWJlck9mQnVm
ZmVycyA9IGlvRGF0YS0+bU51bWJlckJ1ZmZlcnM7Ci0gICAgVUludDMyIGZyYW1lc1JlbWFpbmlu
ZyA9IG51bWJlck9mRnJhbWVzOwotICAgIFVJbnQzMiBmcmFtZU9mZnNldCA9IDA7Ci0gICAgd2hp
bGUgKGZyYW1lc1JlbWFpbmluZyA+IDApIHsKLSAgICAgICAgaWYgKG1fc3RhcnRTcGFyZUZyYW1l
IDwgbV9lbmRTcGFyZUZyYW1lKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9zdGFydFNwYXJlRnJh
bWUgPCBtX2VuZFNwYXJlRnJhbWUpOwotICAgICAgICAgICAgVUludDMyIGZyYW1lc1RoaXNUaW1l
ID0gc3RkOjptaW48VUludDMyPihtX2VuZFNwYXJlRnJhbWUgLSBtX3N0YXJ0U3BhcmVGcmFtZSwg
bnVtYmVyT2ZGcmFtZXMpOwotICAgICAgICAgICAgYXNzaWduQXVkaW9CdWZmZXJzVG9CdXMoYnVm
ZmVycywgbV9yZW5kZXJCdXMuZ2V0KCksIG51bWJlck9mQnVmZmVycywgbnVtYmVyT2ZGcmFtZXMs
IGZyYW1lT2Zmc2V0LCBmcmFtZXNUaGlzVGltZSk7Ci0gICAgICAgICAgICBtX3JlbmRlckJ1cy0+
Y29weUZyb21SYW5nZShtX3NwYXJlQnVzLmdldCgpLCBtX3N0YXJ0U3BhcmVGcmFtZSwgbV9lbmRT
cGFyZUZyYW1lKTsKLSAgICAgICAgICAgIHByb2Nlc3NCdXNBZnRlclJlbmRlcihtX3JlbmRlckJ1
cy5nZXQoKSwgZnJhbWVzVGhpc1RpbWUpOwotICAgICAgICAgICAgZnJhbWVPZmZzZXQgKz0gZnJh
bWVzVGhpc1RpbWU7Ci0gICAgICAgICAgICBmcmFtZXNSZW1haW5pbmcgLT0gZnJhbWVzVGhpc1Rp
bWU7Ci0gICAgICAgICAgICBtX3N0YXJ0U3BhcmVGcmFtZSArPSBmcmFtZXNUaGlzVGltZTsKLSAg
ICAgICAgfQotCi0gICAgICAgIFVJbnQzMiBmcmFtZXNUaGlzVGltZSA9IHN0ZDo6bWluPFVJbnQz
Mj4oa1JlbmRlckJ1ZmZlclNpemUsIGZyYW1lc1JlbWFpbmluZyk7Ci0gICAgICAgIGFzc2lnbkF1
ZGlvQnVmZmVyc1RvQnVzKGJ1ZmZlcnMsIG1fcmVuZGVyQnVzLmdldCgpLCBudW1iZXJPZkJ1ZmZl
cnMsIG51bWJlck9mRnJhbWVzLCBmcmFtZU9mZnNldCwgZnJhbWVzVGhpc1RpbWUpOwotCi0gICAg
ICAgIGlmICghZnJhbWVzVGhpc1RpbWUpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYg
KGZyYW1lc1RoaXNUaW1lIDwga1JlbmRlckJ1ZmZlclNpemUpIHsKLSAgICAgICAgICAgIG1fY2Fs
bGJhY2sucmVuZGVyKDAsIG1fc3BhcmVCdXMucHRyKCksIGtSZW5kZXJCdWZmZXJTaXplLCBvdXRw
dXRUaW1lc3RhbXApOwotICAgICAgICAgICAgbV9yZW5kZXJCdXMtPmNvcHlGcm9tUmFuZ2UobV9z
cGFyZUJ1cy5nZXQoKSwgMCwgZnJhbWVzVGhpc1RpbWUpOwotICAgICAgICAgICAgbV9zdGFydFNw
YXJlRnJhbWUgPSBmcmFtZXNUaGlzVGltZTsKLSAgICAgICAgICAgIG1fZW5kU3BhcmVGcmFtZSA9
IGtSZW5kZXJCdWZmZXJTaXplOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1fY2FsbGJh
Y2sucmVuZGVyKDAsIG1fcmVuZGVyQnVzLnB0cigpLCBmcmFtZXNUaGlzVGltZSwgb3V0cHV0VGlt
ZXN0YW1wKTsKLSAgICAgICAgcHJvY2Vzc0J1c0FmdGVyUmVuZGVyKG1fcmVuZGVyQnVzLmdldCgp
LCBmcmFtZXNUaGlzVGltZSk7Ci0gICAgICAgIGZyYW1lT2Zmc2V0ICs9IGZyYW1lc1RoaXNUaW1l
OwotICAgICAgICBmcmFtZXNSZW1haW5pbmcgLT0gZnJhbWVzVGhpc1RpbWU7CisKKyAgICAvLyBB
c3NvY2lhdGUgdGhlIGRlc3RpbmF0aW9uIGRhdGEgYXJyYXkgd2l0aCB0aGUgb3V0cHV0IGJ1cyB0
aGVuIGZpbGwgdGhlIEZJRk8uCisgICAgYXNzaWduQXVkaW9CdWZmZXJzVG9CdXMoYnVmZmVycywg
bV9vdXRwdXRCdXMuZ2V0KCksIG51bWJlck9mQnVmZmVycywgbnVtYmVyT2ZGcmFtZXMsIDAsIG51
bWJlck9mRnJhbWVzKTsKKyAgICBzaXplX3QgZnJhbWVzVG9SZW5kZXIgPSBtX2ZpZm8tPnB1bGwo
bV9vdXRwdXRCdXMucHRyKCksIG51bWJlck9mRnJhbWVzKTsKKworICAgIGZvciAoc2l6ZV90IHB1
c2hlZEZyYW1lcyA9IDA7IHB1c2hlZEZyYW1lcyA8IGZyYW1lc1RvUmVuZGVyOyBwdXNoZWRGcmFt
ZXMgKz0ga1JlbmRlckJ1ZmZlclNpemUpIHsKKyAgICAgICAgaWYgKG1fcmVzYW1wbGVyKQorICAg
ICAgICAgICAgbV9yZXNhbXBsZXItPnByb2Nlc3ModGhpcywgbV9yZW5kZXJCdXMucHRyKCksIGtS
ZW5kZXJCdWZmZXJTaXplKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9jYWxsYmFjay5y
ZW5kZXIoMCwgbV9yZW5kZXJCdXMucHRyKCksIGtSZW5kZXJCdWZmZXJTaXplLCBtX291dHB1dFRp
bWVzdGFtcCk7CisKKyAgICAgICAgbV9maWZvLT5wdXNoKG1fcmVuZGVyQnVzLnB0cigpKTsKICAg
ICB9CiAKICAgICByZXR1cm4gbm9FcnI7CkBAIC0xOTMsNiArMTkzLDEyIEBAIE9TU3RhdHVzIEF1
ZGlvRGVzdGluYXRpb25Db2NvYTo6aW5wdXRQcm9jKHZvaWQqIHVzZXJEYXRhLCBBdWRpb1VuaXRS
ZW5kZXJBY3Rpb25GCiAgICAgcmV0dXJuIGF1ZGlvT3V0cHV0LT5yZW5kZXIodGltZXN0YW1wLCBu
dW1iZXJPZkZyYW1lcywgaW9EYXRhKTsKIH0KIAordm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6
OnByb3ZpZGVJbnB1dChBdWRpb0J1cyogYnVzLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQorewor
ICAgIEFTU0VSVF9VTlVTRUQoZnJhbWVzVG9Qcm9jZXNzLCBmcmFtZXNUb1Byb2Nlc3MgPT0ga1Jl
bmRlckJ1ZmZlclNpemUpOworICAgIG1fY2FsbGJhY2sucmVuZGVyKDAsIGJ1cywga1JlbmRlckJ1
ZmZlclNpemUsIG1fb3V0cHV0VGltZXN0YW1wKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmgKaW5k
ZXggMzkyODhlYTlmYjMyNGJiYTMxZDE3YzIzNjA4ZTExNWNhY2MwMzFhZS4uYWZiNjMwOTI3NjU2
MDA0ZThlYTk1MWNmMTM2YTEzMDc3NGUyMzU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmgKQEAg
LTI4LDE3ICsyOCwyMiBAQAogI2lmIEVOQUJMRShXRUJfQVVESU8pCiAKICNpbmNsdWRlICJBdWRp
b0Rlc3RpbmF0aW9uLmgiCisjaW5jbHVkZSAiQXVkaW9JT0NhbGxiYWNrLmgiCisjaW5jbHVkZSAi
QXVkaW9Tb3VyY2VQcm92aWRlci5oIgogI2luY2x1ZGUgPEF1ZGlvVW5pdC9BdWRpb1VuaXQuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvQnVzOworY2xhc3MgTXVsdGlDaGFubmVs
UmVzYW1wbGVyOworY2xhc3MgUHVzaFB1bGxGSUZPOwogCiB1c2luZyBDcmVhdGVBdWRpb0Rlc3Rp
bmF0aW9uQ29jb2FPdmVycmlkZSA9IHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0Rlc3RpbmF0aW9uPigq
KShBdWRpb0lPQ2FsbGJhY2smLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAogLy8gQW4gQXVkaW9EZXN0
aW5hdGlvbiB1c2luZyBDb3JlQXVkaW8ncyBkZWZhdWx0IG91dHB1dCBBdWRpb1VuaXQKLWNsYXNz
IEF1ZGlvRGVzdGluYXRpb25Db2NvYSA6IHB1YmxpYyBBdWRpb0Rlc3RpbmF0aW9uIHsKK2NsYXNz
IEF1ZGlvRGVzdGluYXRpb25Db2NvYSA6IHB1YmxpYyBBdWRpb0Rlc3RpbmF0aW9uLCBwdWJsaWMg
QXVkaW9Tb3VyY2VQcm92aWRlciB7CiBwdWJsaWM6CiAgICAgQXVkaW9EZXN0aW5hdGlvbkNvY29h
KEF1ZGlvSU9DYWxsYmFjayYsIGZsb2F0IHNhbXBsZVJhdGUpOwogICAgIHZpcnR1YWwgfkF1ZGlv
RGVzdGluYXRpb25Db2NvYSgpOwpAQCAtNDksMTQgKzU0LDE0IEBAIHByb3RlY3RlZDoKICAgICB2
b2lkIHNldElzUGxheWluZyhib29sKTsKIAogICAgIGJvb2wgaXNQbGF5aW5nKCkgZmluYWwgeyBy
ZXR1cm4gbV9pc1BsYXlpbmc7IH0KLSAgICBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9CisgICAgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fY29udGV4dFNhbXBsZVJhdGU7IH0KICAgICB1bnNpZ25lZCBmcmFtZXNQ
ZXJCdWZmZXIoKSBjb25zdCBmaW5hbDsKICAgICBBdWRpb1VuaXQmIG91dHB1dFVuaXQoKSB7IHJl
dHVybiBtX291dHB1dFVuaXQ7IH0KICAgICAKICAgICAvLyBEZWZhdWx0T3V0cHV0VW5pdCBjYWxs
YmFjawogICAgIHN0YXRpYyBPU1N0YXR1cyBpbnB1dFByb2Modm9pZCogdXNlckRhdGEsIEF1ZGlv
VW5pdFJlbmRlckFjdGlvbkZsYWdzKiwgY29uc3QgQXVkaW9UaW1lU3RhbXAqLCBVSW50MzIgYnVz
TnVtYmVyLCBVSW50MzIgbnVtYmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCogaW9EYXRhKTsK
IAotICAgIHZvaWQgc2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKEF1ZGlvU3RyZWFtQmFz
aWNEZXNjcmlwdGlvbiYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIHZvaWQgc2V0QXVkaW9TdHJl
YW1CYXNpY0Rlc2NyaXB0aW9uKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYpOwogCiBwcml2
YXRlOgogICAgIHZvaWQgc3RhcnQoKSBvdmVycmlkZTsKQEAgLTY0LDYgKzY5LDkgQEAgcHJpdmF0
ZToKIAogICAgIGZyaWVuZCBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9E
ZXN0aW5hdGlvbjo6Y3JlYXRlKEF1ZGlvSU9DYWxsYmFjayYsIGNvbnN0IFN0cmluZyYsIHVuc2ln
bmVkLCB1bnNpZ25lZCwgZmxvYXQpOwogICAgIAorICAgIC8vIEF1ZGlvU291cmNlUHJvdmlkZXIu
CisgICAgdm9pZCBwcm92aWRlSW5wdXQoQXVkaW9CdXMqLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNz
KSBmaW5hbDsKKwogICAgIHZvaWQgY29uZmlndXJlKCk7CiAgICAgdm9pZCBwcm9jZXNzQnVzQWZ0
ZXJSZW5kZXIoQXVkaW9CdXMmLCBVSW50MzIgbnVtYmVyT2ZGcmFtZXMpOwogCkBAIC03MSwxNCAr
NzksMjIgQEAgcHJpdmF0ZToKIAogICAgIEF1ZGlvVW5pdCBtX291dHB1dFVuaXQ7CiAgICAgQXVk
aW9JT0NhbGxiYWNrJiBtX2NhbGxiYWNrOworCisgICAgLy8gVG8gcGFzcyB0aGUgZGF0YSBmcm9t
IEZJRk8gdG8gdGhlIGF1ZGlvIGRldmljZSBjYWxsYmFjay4KKyAgICBSZWY8QXVkaW9CdXM+IG1f
b3V0cHV0QnVzOworCisgICAgLy8gVG8gcHVzaCB0aGUgcmVuZGVyZWQgcmVzdWx0IGZyb20gV2Vi
QXVkaW8gZ3JhcGggaW50byB0aGUgRklGTy4KICAgICBSZWY8QXVkaW9CdXM+IG1fcmVuZGVyQnVz
OwotICAgIFJlZjxBdWRpb0J1cz4gbV9zcGFyZUJ1czsKIAotICAgIGZsb2F0IG1fc2FtcGxlUmF0
ZTsKLSAgICBib29sIG1faXNQbGF5aW5nIHsgZmFsc2UgfTsKKyAgICAvLyBSZXNvbHZlcyB0aGUg
YnVmZmVyIHNpemUgbWlzbWF0Y2ggYmV0d2VlbiB0aGUgV2ViQXVkaW8gZW5naW5lIGFuZAorICAg
IC8vIHRoZSBjYWxsYmFjayBmdW5jdGlvbiBmcm9tIHRoZSBhY3R1YWwgYXVkaW8gZGV2aWNlLgor
ICAgIFVuaXF1ZVJlZjxQdXNoUHVsbEZJRk8+IG1fZmlmbzsKKworICAgIHN0ZDo6dW5pcXVlX3B0
cjxNdWx0aUNoYW5uZWxSZXNhbXBsZXI+IG1fcmVzYW1wbGVyOworICAgIEF1ZGlvSU9Qb3NpdGlv
biBtX291dHB1dFRpbWVzdGFtcDsKIAotICAgIHVuc2lnbmVkIG1fc3RhcnRTcGFyZUZyYW1lIHsg
MCB9OwotICAgIHVuc2lnbmVkIG1fZW5kU3BhcmVGcmFtZSB7IDAgfTsKKyAgICBmbG9hdCBtX2Nv
bnRleHRTYW1wbGVSYXRlOworICAgIGJvb2wgbV9pc1BsYXlpbmcgeyBmYWxzZSB9OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwCmluZGV4IDM5Mjk1MjM2ZTMw
M2UwYzE4NzA1ZmZiZWU1NDZiNDg4YzUyYWJlZTUuLmM0NzMzZGU3Zjc1ZGE5YWI2ZDA4N2EyMzFh
ZDhlYjk4MWRjNjg4OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgdm9p
ZCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OmNvbmZpZ3VyZSgpCiAgICAgcmVzdWx0ID0gQXVkaW9V
bml0R2V0UHJvcGVydHkob3V0cHV0VW5pdCgpLCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9y
bWF0LCBrQXVkaW9Vbml0U2NvcGVfT3V0cHV0LCAwLCAodm9pZCopJnN0cmVhbUZvcm1hdCwgJnNp
emUpOwogICAgIEFTU0VSVCghcmVzdWx0KTsKIAotICAgIHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNj
cmlwdGlvbihzdHJlYW1Gb3JtYXQsIHNhbXBsZVJhdGUoKSk7CisgICAgc2V0QXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uKHN0cmVhbUZvcm1hdCk7CiAKICAgICByZXN1bHQgPSBBdWRpb1VuaXRT
ZXRQcm9wZXJ0eShvdXRwdXRVbml0KCksIGtBdWRpb1VuaXRQcm9wZXJ0eV9TdHJlYW1Gb3JtYXQs
IGtBdWRpb1VuaXRTY29wZV9JbnB1dCwgMCwgKHZvaWQqKSZzdHJlYW1Gb3JtYXQsIHNpemVvZihB
dWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24pKTsKICAgICBBU1NFUlQoIXJlc3VsdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlv
bk1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5h
dGlvbk1hYy5jcHAKaW5kZXggN2EwMWVhZTA2ZTI5MDMyZmQwNTk4YTAwZTM0ZGUyMzU3ZDJhNTdh
NC4uZmY2OTQzYjM4MDNhMWIyNTUyYjU4ZWMyNzI1MDE0NWNkOGVhNDhhMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9u
TWFjLmNwcApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6Y29u
ZmlndXJlKCkKIAogICAgIC8vIFNldCBzdHJlYW0gZm9ybWF0CiAgICAgQXVkaW9TdHJlYW1CYXNp
Y0Rlc2NyaXB0aW9uIHN0cmVhbUZvcm1hdDsKLSAgICBzZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3Jp
cHRpb24oc3RyZWFtRm9ybWF0LCBzYW1wbGVSYXRlKCkpOworICAgIHNldEF1ZGlvU3RyZWFtQmFz
aWNEZXNjcmlwdGlvbihzdHJlYW1Gb3JtYXQpOwogCiAgICAgcmVzdWx0ID0gQXVkaW9Vbml0U2V0
UHJvcGVydHkob3V0cHV0VW5pdCgpLCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBr
QXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICh2b2lkKikmc3RyZWFtRm9ybWF0LCBzaXplb2YoQXVk
aW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKSk7CiAgICAgQVNTRVJUKCFyZXN1bHQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVy
UGFyc2VyV2ViTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9T
b3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAppbmRleCA4YWVjMmVhM2Q0ZjE3NTlkZjdjZTY0MjM2
YzMyYjY4MTU2NDRkZjcxLi4zZDZjODIxYWE1OWZjNDVhN2ViN2MxZjgzMjYyYjY4YmNkOWZjOTU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApAQCAtNTUsNiArNTUsOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBQQUw7CiAKKy8vIEZJWE1FOiBS
ZW1vdmUgdGhpcyBvbmNlIGtDTVZpZGVvQ29kZWNUeXBlX1ZQOSBpcyBhZGRlZCB0byBDTUZvcm1h
dERlc2NyaXB0aW9uLmgKK2NvbnN0ZXhwciBDTVZpZGVvQ29kZWNUeXBlIGtDTVZpZGVvQ29kZWNU
eXBlX1ZQOSB7ICd2cDA5JyB9OworCiBzdGF0aWMgYm9vbCBpc1dlYm1QYXJzZXJBdmFpbGFibGUo
KQogewogICAgIHJldHVybiAhIXdlYm06OnN3YXAgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2hhcmVkRmVhdHVyZXMoKS53ZWJNUGFyc2VyRW5hYmxlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0
dXJlRGV2aWNlLmgKaW5kZXggNTI4ODdlYzIyM2U3MzFiMDk3ZWEwNDYyOGE2MWJjNDc1YzhjYzE2
Yy4uNThhMTJhOTExNGY2ZmZlMmQ0NDc5YjkxZWEwOWI3ZjJkMGUwMzYyMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVE
ZXZpY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29y
ZUF1ZGlvQ2FwdHVyZURldmljZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkgJiYgUExBVEZPUk0oTUFDKQogCiAjaW5jbHVkZSAiQ2FwdHVyZURldmljZS5oIgor
I2luY2x1ZGUgPHBhbC9zcGkvY2YvQ29yZUF1ZGlvU1BJLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNw
cAppbmRleCA4NjNjNGQ1NGJmOTc4ZDI4ZWI1MTEzNjcyNDAxOGRkMTcxMzM0Y2QzLi44ZTNhZjAz
NTM2YzJkM2I3NmI4NjM1NjhmODc0OTRiNWEzYzFmNGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL01vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAK
QEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBNb2NrQXVkaW9EZXN0aW5hdGlvbkNvY29hOjp0aWNrKCkK
IHsKICAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHNhbXBsZVJhdGUgPSBzYW1wbGVS
YXRlKCksIG51bWJlck9mRnJhbWVzVG9Qcm9jZXNzID0gbV9udW1iZXJPZkZyYW1lc1RvUHJvY2Vz
c10gewogICAgICAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0Owot
ICAgICAgICBzZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oc3RyZWFtRm9ybWF0LCBzYW1w
bGVSYXRlKTsKKyAgICAgICAgc2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKHN0cmVhbUZv
cm1hdCk7CiAKICAgICAgICAgV2ViQXVkaW9CdWZmZXJMaXN0IHdlYkF1ZGlvQnVmZmVyTGlzdCB7
IHN0cmVhbUZvcm1hdCwgbnVtYmVyT2ZGcmFtZXNUb1Byb2Nlc3MgfTsKICAgICAgICAgQXVkaW9E
ZXN0aW5hdGlvbkNvY29hOjppbnB1dFByb2ModGhpcywgMCwgMCwgMCwgbnVtYmVyT2ZGcmFtZXNU
b1Byb2Nlc3MsIHdlYkF1ZGlvQnVmZmVyTGlzdC5saXN0KCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408706</attachid>
            <date>2020-09-14 08:19:28 -0700</date>
            <delta_ts>2020-09-14 08:47:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216425-20200914081927.patch</filename>
            <type>text/plain</type>
            <size>67377</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2OTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTk4OWVhNTIyNDI0MGRl
ZWVkYTdlYzgzNzVkNzMxMzY0MWQ0MWJkYS4uZjFiNmQzOGYwZGE0ZjQxMWE0ZjM0NzIzZDY5MWJj
OTY4ZjgwYjM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDIwLTA5LTExICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHByb3BlciBzdXBwb3J0
IGZvciBBdWRpb0NvbnRleHRPcHRpb25zLnNhbXBsZVJhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjQyNQorCisgICAgICAgIFJldmlld2VkIGJ5
IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBBZGQgcHJvcGVyIHN1cHBvcnQgZm9yIEF1ZGlvQ29u
dGV4dE9wdGlvbnMuc2FtcGxlUmF0ZS4gUHJldmlvdXNseSwgb3VyIEF1ZGlvQ29udGV4dCBhbHdh
eXMgcmFuCisgICAgICAgIGF0IHRoZSBoYXJkd2FyZSdzIHNhbXBsZVJhdGUsIG5vIG1hdHRlciB3
aGF0IHZhbHVlIHdhcyBzZXQgZm9yIEF1ZGlvQ29udGV4dE9wdGlvbnMuc2FtcGxlUmF0ZS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGlzIGJhc2VkIG9uIHRoZSBmb2xsb3dpbmcgQ2hyb21pdW0gY2hh
bmdlczoKKyAgICAgICAgLSBodHRwczovL2Nocm9taXVtLXJldmlldy5nb29nbGVzb3VyY2UuY29t
L2MvY2hyb21pdW0vc3JjLysvMTQ4Mjk1NworICAgICAgICAtIGh0dHBzOi8vY29kZXJldmlldy5j
aHJvbWl1bS5vcmcvMjU0OTA5MzAwOQorICAgICAgICAtIGh0dHBzOi8vY29kZXJldmlldy5jaHJv
bWl1bS5vcmcvMTQxODkwMzUKKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1
ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRBdWRpb0Rl
c3RpbmF0aW9uTm9kZTo6Y3JlYXRlRGVzdGluYXRpb24pOgorICAgICAgICBXaGVuIGNyZWF0aW5n
IGFuIEF1ZGlvRGVzdGluYXRpb24sIHBhc3MgdGhlIHJlcXVlc3RlZCBBdWRpb0NvbnRleHQgc2Ft
cGxlIHJhdGUKKyAgICAgICAgaW5zdGVhZCBvZiB0aGUgaGFyZHdhcmUgc2FtcGxlIHJhdGUuCisK
KyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvRklGTy5oOiBSZW1vdmVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvUHVsbEZJRk8uY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvUHVsbEZJRk8uaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9QdXNoUHVsbEZJRk8uY3BwOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9QdXNoUHVsbEZJRk8uaDogQWRkZWQuCisgICAgICAgIFJlcGxhY2UgQXVkaW9G
SUZPIGFuZCBBdWRpb1B1bGxGSUZPIHdpdGggYSBuZXcgUHVzaFB1bGxGSUZPIHJlcGxhY2VtZW50
LCBzaW1pbGFybHkKKyAgICAgICAgdG8gd2hhdCB3YXMgZG9uZSBpbiBDaHJvbWl1bSBpbjoKKyAg
ICAgICAgLSBodHRwczovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzI1NDkwOTMwMDkKKworICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNdWx0aUNoYW5uZWxSZXNhbXBsZXI6Ok11bHRpQ2hhbm5lbFJlc2FtcGxlcik6
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTaW5jUmVzYW1wbGVyOjpTaW5jUmVzYW1wbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbmNS
ZXNhbXBsZXI6OnVwZGF0ZVJlZ2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U2luY1Jlc2FtcGxl
cjo6aW5pdGlhbGl6ZUtlcm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpTaW5jUmVzYW1wbGVyOjpw
cm9jZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmg6CisgICAg
ICAgIEFkZCBwYXJhbWV0ZXIgdG8gTXVsdGlDaGFubmVsUmVzYW1wbGVyICYgU2luY1Jlc2FtcGxl
ciB0byBhbGxvdyB0aGUgY2xpZW50IHRvIHNwZWNpZnkKKyAgICAgICAgdGhlIHNpemUgb2YgdGhl
IGJ1ZmZlciBpbiBmcmFtZXMgd2hlbiB0aGUgcmVzYW1wbGVyIGNhbGxzIEF1ZGlvU291cmNlUHJv
dmlkZXI6OnByb3ZpZGVJbnB1dCgpCisgICAgICAgIHRvIGdldCBpbnB1dCBkYXRhLiBUaGlzIGlz
IG5lY2Vzc2FyeSBiZWNhdXNlIG91ciBXZWJBdWRpbyBpbXBsZW1lbnRhdGlvbiB1c2VzIGEgc3Rh
dGljCisgICAgICAgIGJ1ZmZlciBzaXplIG9mIDEyOCBmcmFtZXMuIFRoaXMgaXMgc2ltaWxhciB0
byB3aGF0IHdhcyBkb25lIGluIENocm9taXVtIGluOgorICAgICAgICAtIGh0dHBzOi8vY29kZXJl
dmlldy5jaHJvbWl1bS5vcmcvMTQxODkwMzUKKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2Nv
Y29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rl
c3RpbmF0aW9uQ29jb2E6OkF1ZGlvRGVzdGluYXRpb25Db2NvYSk6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnJlbmRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnByb3ZpZGVJbnB1dCk6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmg6CisgICAg
ICAgIC0gQWRvcHQgUHVzaFB1bGxGSUZPIHRvIHJlc29sdmUgdGhlIGJ1ZmZlciBzaXplIG1pc21h
dGNoIGJldHdlZW4gdGhlIFdlYkF1ZGlvIGVuZ2luZSBhbmQKKyAgICAgICAgICB0aGUgY2FsbGJh
Y2sgZnVuY3Rpb24gZnJvbSB0aGUgYWN0dWFsIGF1ZGlvIGRldmljZSwgc2ltaWxhcmx5IHRvIHdo
YXQgd2FzIGRvbmUgaW4gQ2hyb21pdW0uCisgICAgICAgIC0gV2hlbiB0aGUgY29udGV4dCdzIHNh
bXBsZSByYXRlIGRpZmZlcnMgZnJvbSB0aGUgaGFyZHdhcmUgc2FtcGxlIHJhdGUsIGluc3RhbnRp
YXRlIGEKKyAgICAgICAgICBNdWx0aUNoYW5uZWxSZXNhbXBsZXIgYW5kIHVzZSBpdCBpbiByZW5k
ZXIoKSB0byBkbyB0aGUgcmVzYW1wbGluZy4KKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lv
cy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGlu
YXRpb25Db2NvYTo6Y29uZmlndXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVk
aW9EZXN0aW5hdGlvbk1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9u
Q29jb2E6OmNvbmZpZ3VyZSk6CisgICAgICAgIERyb3Agc2FtcGxlUmF0ZSBwYXJhbWV0ZXIgYXMg
aXQgaXMgbm8gbG9uZ2VyIG5lZWRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja0F1
ZGlvRGVzdGluYXRpb25Db2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQXVkaW9EZXN0
aW5hdGlvbkNvY29hOjp0aWNrKToKKwogMjAyMC0wOS0xMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1
a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFNlcmlhbGl6YXRpb24gc2hvdWxkIGhhdmUgZXhjZXB0
aW9uIGNoZWNrcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9E
ZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCmluZGV4IGIxNTllMzJmMTFi
YTc5NGYxZmUxMDc1OGQ5NjAwZWU2ZDA4OTQyOGUuLmI0OTc5NWRmYTUyNjVjN2ZlMGI2ODI5ZjZm
ODlkNjE2NDQ0OTBiMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKQEAgLTgyLDEw
ICs4Miw4IEBAIHZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjp1bmluaXRpYWxpemUo
KQogCiB2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6Y3JlYXRlRGVzdGluYXRpb24o
KQogewotICAgIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSA9IEF1ZGlvRGVzdGluYXRpb246Omhh
cmR3YXJlU2FtcGxlUmF0ZSgpOwotICAgIExPRyhXZWJBdWRpbywgIj4+Pj4gaGFyZHdhcmVTYW1w
bGVSYXRlID0gJWZcbiIsIGhhcmR3YXJlU2FtcGxlUmF0ZSk7Ci0KLSAgICBtX2Rlc3RpbmF0aW9u
ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPm1lZGlhU3RyYXRlZ3koKS5jcmVhdGVBdWRpb0Rlc3Rp
bmF0aW9uKCp0aGlzLCBtX2lucHV0RGV2aWNlSWQsIG1fbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBj
aGFubmVsQ291bnQoKSwgaGFyZHdhcmVTYW1wbGVSYXRlKTsKKyAgICBBTFdBWVNfTE9HKExPR0lE
RU5USUZJRVIsICJjb250ZXh0U2FtcGxlUmF0ZSA9ICIsIG1fc2FtcGxlUmF0ZSwgIiwgaGFyZHdh
cmVTYW1wbGVSYXRlID0gIiwgQXVkaW9EZXN0aW5hdGlvbjo6aGFyZHdhcmVTYW1wbGVSYXRlKCkp
OworICAgIG1fZGVzdGluYXRpb24gPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bWVkaWFTdHJhdGVn
eSgpLmNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oKnRoaXMsIG1faW5wdXREZXZpY2VJZCwgbV9udW1i
ZXJPZklucHV0Q2hhbm5lbHMsIGNoYW5uZWxDb3VudCgpLCBtX3NhbXBsZVJhdGUpOwogfQogCiB2
b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6ZW5hYmxlSW5wdXQoY29uc3QgU3RyaW5n
JiBpbnB1dERldmljZUlkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAwODcyMTYwNjYyMDZmZWNlMDFhMDBl
ZTViNDM2NTQyMjliMmFhOWU0Li4zMDI5MWIxMmUxNzhmM2Q5YzMxNzMyOTc5MmYyODc5OGQ3ZDY3
NmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTc4OCw5ICsxNzg4LDcgQEAgcGxhdGZvcm0vYW5pbWF0
aW9uL1RpbWluZ0Z1bmN0aW9uLmNwcAogcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwCiBwbGF0
Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuY3BwCiBwbGF0Zm9ybS9hdWRpby9BdWRpb0RTUEtlcm5l
bFByb2Nlc3Nvci5jcHAKLXBsYXRmb3JtL2F1ZGlvL0F1ZGlvRklGTy5jcHAKIHBsYXRmb3JtL2F1
ZGlvL0F1ZGlvSGFyZHdhcmVMaXN0ZW5lci5jcHAKLXBsYXRmb3JtL2F1ZGlvL0F1ZGlvUHVsbEZJ
Rk8uY3BwCiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5jcHAKIHBsYXRmb3JtL2F1ZGlv
L0F1ZGlvUmVzYW1wbGVyS2VybmVsLmNwcAogcGxhdGZvcm0vYXVkaW8vQXVkaW9VdGlsaXRpZXMu
Y3BwCkBAIC0xODE0LDYgKzE4MTIsNyBAQCBwbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNh
bXBsZXIuY3BwCiBwbGF0Zm9ybS9hdWRpby9QYW5uZXIuY3BwCiBwbGF0Zm9ybS9hdWRpby9QbGF0
Zm9ybU1lZGlhU2Vzc2lvbi5jcHAKIHBsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlci5jcHAKK3BsYXRmb3JtL2F1ZGlvL1B1c2hQdWxsRklGTy5jcHAKIHBsYXRmb3JtL2F1
ZGlvL1JldmVyYi5jcHAKIHBsYXRmb3JtL2F1ZGlvL1JldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5j
cHAKIHBsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0NjM3Y2U0ODJlZDQx
Y2M4MmUxMTY0N2Q2Y2NjYjUwNTg2ZDBlZTk4Li5iZjE3ZDRmOTE1YTgxNjcxYmY1MWRiZDBlOGEz
MTNkZTk4NWRmZTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0yNTI2LDYgKzI1MjYsNyBAQAogCQk4M0M1Nzk1RDFEQTVDMzAx
MDA2RkFDQTggLyogU2Nyb2xsVG9PcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4MzUwQzNFNzFEQTU5QjYyMDAzNTY0NDYgLyogU2Nyb2xsVG9P
cHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJODNEMzVBRUMxQzcxODdGQTAwRjcwRDVBIC8qIFhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRDM1QUVB
MUM3MTg3RUQwMEY3MEQ1QSAvKiBYTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0LmggKi87IH07CiAJ
CTgzRDM1QUYyMUM3MThEOTAwMEY3MEQ1QSAvKiBKU1hNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRDM1QUYw
MUM3MThEODQwMEY3MEQ1QSAvKiBKU1hNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQuaCAqLzsgfTsK
KwkJODNENTExRjYyNTBDMUNCRjAwMkVEQzUxIC8qIFB1c2hQdWxsRklGTy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNENTExRjUyNTBDMUNBODAwMkVE
QzUxIC8qIFB1c2hQdWxsRklGTy5oICovOyB9OwogCQk4M0RCOUUwRjI0REExOTQ5MDAzN0I0Njgg
LyogQmlxdWFkRmlsdGVyVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODNEQjlFMEMyNERBMThCNTAwMzdCNDY4IC8qIEJpcXVhZEZpbHRlclR5cGUu
aCAqLzsgfTsKIAkJODNEQjlFMTAyNERBMTk1NzAwMzdCNDY4IC8qIEJpcXVhZEZpbHRlck9wdGlv
bnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzREI5
RTBFMjREQTE4QjYwMDM3QjQ2OCAvKiBCaXF1YWRGaWx0ZXJPcHRpb25zLmggKi87IH07CiAJCTgz
RTM1OUEyMUJCMTAzMUQwMDJDRUI5OCAvKiBKU0hUTUxUaW1lRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNFMzU5QTAxQkIxMDMxRDAwMkNF
Qjk4IC8qIEpTSFRNTFRpbWVFbGVtZW50LmggKi87IH07CkBAIC0xMDcwNyw2ICsxMDcwOCw4IEBA
CiAJCTgzRDM1QUVCMUM3MTg3RUQwMEY3MEQ1QSAvKiBYTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBYTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0Lmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNEMzVBRUYxQzcxOEQ4NDAwRjcwRDVB
IC8qIEpTWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU1hNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4M0QzNUFGMDFDNzE4RDg0MDBGNzBENUEgLyogSlNYTUxI
dHRwUmVxdWVzdEV2ZW50VGFyZ2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk4M0Q1MTFGMzI1MEMxQ0E4MDAyRURDNTEgLyogUHVzaFB1bGxGSUZPLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFB1c2hQdWxsRklGTy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzRDUxMUY1MjUwQzFDQTgwMDJFREM1MSAvKiBQdXNoUHVs
bEZJRk8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHVzaFB1bGxGSUZPLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzREI5RTBBMjREQTE4QjQwMDM3QjQ2OCAv
KiBCaXF1YWRGaWx0ZXJUeXBlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBCaXF1YWRGaWx0ZXJUeXBlLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNEQjlFMEMyNERBMThCNTAwMzdCNDY4IC8qIEJpcXVh
ZEZpbHRlclR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmlxdWFkRmlsdGVyVHlwZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4M0RCOUUwRDI0REExOEI1MDAzN0I0NjggLyogQmlxdWFk
RmlsdGVyT3B0aW9ucy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQmlxdWFkRmlsdGVyT3B0aW9ucy5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMDAzMyw2ICszMDAzNiw4IEBACiAJCQkJMDcwRTA5MTgx
ODc1RUQ5MzAwM0ExRDNDIC8qIFBsYXRmb3JtTWVkaWFTZXNzaW9uLmggKi8sCiAJCQkJQ0RBRThD
MDcxNzQ2Qjk1NzAwNTMyRDc4IC8qIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgKi8s
CiAJCQkJQ0RBRThDMDgxNzQ2Qjk1NzAwNTMyRDc4IC8qIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFu
YWdlci5oICovLAorCQkJCTgzRDUxMUYzMjUwQzFDQTgwMDJFREM1MSAvKiBQdXNoUHVsbEZJRk8u
Y3BwICovLAorCQkJCTgzRDUxMUY1MjUwQzFDQTgwMDJFREM1MSAvKiBQdXNoUHVsbEZJRk8uaCAq
LywKIAkJCQlGRDMxNjA2RTEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJiLmNwcCAqLywKIAkJCQlG
RDMxNjA2RjEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJiLmggKi8sCiAJCQkJRkQzMTYwNzAxMkIw
MjZGNzAwQzFBMzU5IC8qIFJldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5jcHAgKi8sCkBAIC0zMzI2
NSw2ICszMzI3MCw3IEBACiAJCQkJNTczMDNCRUIyMDA5N0Y0MDAwMzU1OTY1IC8qIFB1YmxpY0tl
eUNyZWRlbnRpYWxUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwMDgxRkYwMDE2QjBBMkQzMDA4
QUFBN0EgLyogUHVibGljU3VmZml4LmggaW4gSGVhZGVycyAqLywKIAkJCQkxMEZCMDg0QjE0RTE1
QzdFMDBBM0RCOTggLyogUHVibGljVVJMTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODNE
NTExRjYyNTBDMUNCRjAwMkVEQzUxIC8qIFB1c2hQdWxsRklGTy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTUwQTBCQ0EwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTgzQzFGNTk0MUVERjY5RDMwMDQxMEQyNyAvKiBRdWFsaWZpZWROYW1lQ2FjaGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUExNUUzMUY0MUUwQ0IwQjUwMDRCMzcxQyAvKiBRdWlja0xv
b2suaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9GSUZPLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlv
RklGTy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiM2FhNDk5ZjY5OGJiNDQz
N2RiYjk2ZGQ3MjE1NTBiYTJjYzVmZWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9GSUZPLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDE0NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5h
bWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFC
TEUoV0VCX0FVRElPKQotCi0jaW5jbHVkZSAiQXVkaW9GSUZPLmgiCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotQXVkaW9GSUZPOjpBdWRpb0ZJRk8odW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywg
c2l6ZV90IGZpZm9MZW5ndGgpCi0gICAgOiBtX2ZpZm9BdWRpb0J1cyhBdWRpb0J1czo6Y3JlYXRl
KG51bWJlck9mQ2hhbm5lbHMsIGZpZm9MZW5ndGgpKQotICAgICwgbV9maWZvTGVuZ3RoKGZpZm9M
ZW5ndGgpCi0gICAgLCBtX2ZyYW1lc0luRmlmbygwKQotICAgICwgbV9yZWFkSW5kZXgoMCkKLSAg
ICAsIG1fd3JpdGVJbmRleCgwKQotewotfQotCi12b2lkIEF1ZGlvRklGTzo6Y29uc3VtZShBdWRp
b0J1cyogZGVzdGluYXRpb24sIHNpemVfdCBmcmFtZXNUb0NvbnN1bWUpCi17Ci0gICAgYm9vbCBp
c0dvb2QgPSBkZXN0aW5hdGlvbiAmJiAoZnJhbWVzVG9Db25zdW1lIDw9IG1fZmlmb0xlbmd0aCkg
JiYgKGZyYW1lc1RvQ29uc3VtZSA8PSBtX2ZyYW1lc0luRmlmbykgJiYgKGRlc3RpbmF0aW9uLT5s
ZW5ndGgoKSA+PSBmcmFtZXNUb0NvbnN1bWUpOwotICAgIEFTU0VSVChpc0dvb2QpOwotICAgIGlm
ICghaXNHb29kKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBDb3B5IHRoZSByZXF1ZXN0ZWQg
bnVtYmVyIG9mIHNhbXBsZXMgdG8gdGhlIGRlc3RpbmF0aW9uLgotCi0gICAgc2l6ZV90IHBhcnQx
TGVuZ3RoOwotICAgIHNpemVfdCBwYXJ0Mkxlbmd0aDsKLSAgICBmaW5kV3JhcExlbmd0aHMobV9y
ZWFkSW5kZXgsIGZyYW1lc1RvQ29uc3VtZSwgcGFydDFMZW5ndGgsIHBhcnQyTGVuZ3RoKTsKLQot
ICAgIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzID0gbV9maWZvQXVkaW9CdXMtPm51bWJlck9mQ2hh
bm5lbHMoKTsKLQotICAgIGZvciAoc2l6ZV90IGNoYW5uZWxJbmRleCA9IDA7IGNoYW5uZWxJbmRl
eCA8IG51bWJlck9mQ2hhbm5lbHM7ICsrY2hhbm5lbEluZGV4KSB7Ci0gICAgICAgIGZsb2F0KiBk
ZXN0aW5hdGlvbkRhdGEgPSBkZXN0aW5hdGlvbi0+Y2hhbm5lbChjaGFubmVsSW5kZXgpLT5tdXRh
YmxlRGF0YSgpOwotICAgICAgICBjb25zdCBmbG9hdCogc291cmNlRGF0YSA9IG1fZmlmb0F1ZGlv
QnVzLT5jaGFubmVsKGNoYW5uZWxJbmRleCktPmRhdGEoKTsKLQotICAgICAgICBib29sIGlzQ29w
eUdvb2QgPSAoKG1fcmVhZEluZGV4IDwgbV9maWZvTGVuZ3RoKQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJiYgKG1fcmVhZEluZGV4ICsgcGFydDFMZW5ndGgpIDw9IG1fZmlmb0xlbmd0aAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKHBhcnQxTGVuZ3RoIDw9IGRlc3RpbmF0aW9u
LT5sZW5ndGgoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIChwYXJ0MUxlbmd0aCAr
IHBhcnQyTGVuZ3RoKSA8PSBkZXN0aW5hdGlvbi0+bGVuZ3RoKCkpOwotICAgICAgICBBU1NFUlQo
aXNDb3B5R29vZCk7Ci0gICAgICAgIGlmICghaXNDb3B5R29vZCkKLSAgICAgICAgICAgIHJldHVy
bjsKLQotICAgICAgICBtZW1jcHkoZGVzdGluYXRpb25EYXRhLCBzb3VyY2VEYXRhICsgbV9yZWFk
SW5kZXgsIHBhcnQxTGVuZ3RoICogc2l6ZW9mKCpzb3VyY2VEYXRhKSk7Ci0gICAgICAgIC8vIEhh
bmRsZSB3cmFwIGFyb3VuZCBvZiB0aGUgRklGTywgaWYgbmVlZGVkLgotICAgICAgICBpZiAocGFy
dDJMZW5ndGgpCi0gICAgICAgICAgICBtZW1jcHkoZGVzdGluYXRpb25EYXRhICsgcGFydDFMZW5n
dGgsIHNvdXJjZURhdGEsIHBhcnQyTGVuZ3RoICogc2l6ZW9mKCpzb3VyY2VEYXRhKSk7Ci0gICAg
fQotICAgIG1fcmVhZEluZGV4ID0gdXBkYXRlSW5kZXgobV9yZWFkSW5kZXgsIGZyYW1lc1RvQ29u
c3VtZSk7Ci0gICAgQVNTRVJUKG1fZnJhbWVzSW5GaWZvID49IGZyYW1lc1RvQ29uc3VtZSk7Ci0g
ICAgbV9mcmFtZXNJbkZpZm8gLT0gZnJhbWVzVG9Db25zdW1lOwotfQotCi12b2lkIEF1ZGlvRklG
Tzo6cHVzaChjb25zdCBBdWRpb0J1cyogc291cmNlQnVzKQotewotICAgIC8vIENvcHkgdGhlIHNv
dXJjZUJ1cyBpbnRvIHRoZSBGSUZPIGJ1ZmZlci4KLQotICAgIGJvb2wgaXNHb29kID0gc291cmNl
QnVzICYmIChtX2ZyYW1lc0luRmlmbyArIHNvdXJjZUJ1cy0+bGVuZ3RoKCkgPD0gbV9maWZvTGVu
Z3RoKTsKLSAgICBpZiAoIWlzR29vZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc2l6ZV90IHNv
dXJjZUxlbmd0aCA9IHNvdXJjZUJ1cy0+bGVuZ3RoKCk7Ci0gICAgc2l6ZV90IHBhcnQxTGVuZ3Ro
OwotICAgIHNpemVfdCBwYXJ0Mkxlbmd0aDsKLSAgICBmaW5kV3JhcExlbmd0aHMobV93cml0ZUlu
ZGV4LCBzb3VyY2VMZW5ndGgsIHBhcnQxTGVuZ3RoLCBwYXJ0Mkxlbmd0aCk7Ci0KLSAgICBzaXpl
X3QgbnVtYmVyT2ZDaGFubmVscyA9IG1fZmlmb0F1ZGlvQnVzLT5udW1iZXJPZkNoYW5uZWxzKCk7
Ci0KLSAgICBmb3IgKHNpemVfdCBjaGFubmVsSW5kZXggPSAwOyBjaGFubmVsSW5kZXggPCBudW1i
ZXJPZkNoYW5uZWxzOyArK2NoYW5uZWxJbmRleCkgewotICAgICAgICBmbG9hdCogZGVzdGluYXRp
b24gPSBtX2ZpZm9BdWRpb0J1cy0+Y2hhbm5lbChjaGFubmVsSW5kZXgpLT5tdXRhYmxlRGF0YSgp
OwotICAgICAgICBjb25zdCBmbG9hdCogc291cmNlID0gc291cmNlQnVzLT5jaGFubmVsKGNoYW5u
ZWxJbmRleCktPmRhdGEoKTsKLQotICAgICAgICBib29sIGlzQ29weUdvb2QgPSAoKG1fd3JpdGVJ
bmRleCA8IG1fZmlmb0xlbmd0aCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIChtX3dy
aXRlSW5kZXggKyBwYXJ0MUxlbmd0aCkgPD0gbV9maWZvTGVuZ3RoCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAmJiBwYXJ0Mkxlbmd0aCA8IG1fZmlmb0xlbmd0aAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJiYgcGFydDFMZW5ndGggKyBwYXJ0Mkxlbmd0aCA8PSBzb3VyY2VMZW5ndGgp
OwotICAgICAgICBBU1NFUlQoaXNDb3B5R29vZCk7Ci0gICAgICAgIGlmICghaXNDb3B5R29vZCkK
LSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBtZW1jcHkoZGVzdGluYXRpb24gKyBtX3dy
aXRlSW5kZXgsIHNvdXJjZSwgcGFydDFMZW5ndGggKiBzaXplb2YoKmRlc3RpbmF0aW9uKSk7Ci0K
LSAgICAgICAgLy8gSGFuZGxlIHdyYXAgYXJvdW5kIG9mIHRoZSBGSUZPLCBpZiBuZWVkZWQuCi0g
ICAgICAgIGlmIChwYXJ0Mkxlbmd0aCkKLSAgICAgICAgICAgIG1lbWNweShkZXN0aW5hdGlvbiwg
c291cmNlICsgcGFydDFMZW5ndGgsIHBhcnQyTGVuZ3RoICogc2l6ZW9mKCpkZXN0aW5hdGlvbikp
OwotICAgIH0KLSAgICAgICAgCi0gICAgbV9mcmFtZXNJbkZpZm8gKz0gc291cmNlTGVuZ3RoOwot
ICAgIEFTU0VSVChtX2ZyYW1lc0luRmlmbyA8PSBtX2ZpZm9MZW5ndGgpOwotICAgIG1fd3JpdGVJ
bmRleCA9IHVwZGF0ZUluZGV4KG1fd3JpdGVJbmRleCwgc291cmNlTGVuZ3RoKTsKLX0KLQotdm9p
ZCBBdWRpb0ZJRk86OmZpbmRXcmFwTGVuZ3RocyhzaXplX3QgaW5kZXgsIHNpemVfdCBzaXplLCBz
aXplX3QmIHBhcnQxTGVuZ3RoLCBzaXplX3QmIHBhcnQyTGVuZ3RoKQotewotICAgIEFTU0VSVF9X
SVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgbV9maWZvTGVuZ3RoICYmIHNpemUgPD0g
bV9maWZvTGVuZ3RoKTsKLSAgICBpZiAoaW5kZXggPCBtX2ZpZm9MZW5ndGggJiYgc2l6ZSA8PSBt
X2ZpZm9MZW5ndGgpIHsKLSAgICAgICAgaWYgKGluZGV4ICsgc2l6ZSA+IG1fZmlmb0xlbmd0aCkg
ewotICAgICAgICAgICAgLy8gTmVlZCB0byB3cmFwLiBGaWd1cmUgb3V0IHRoZSBsZW5ndGggb2Yg
ZWFjaCBwaWVjZS4KLSAgICAgICAgICAgIHBhcnQxTGVuZ3RoID0gbV9maWZvTGVuZ3RoIC0gaW5k
ZXg7Ci0gICAgICAgICAgICBwYXJ0Mkxlbmd0aCA9IHNpemUgLSBwYXJ0MUxlbmd0aDsKLSAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIE5vIHdyYXAgbmVlZGVkLgotICAgICAgICAgICAg
cGFydDFMZW5ndGggPSBzaXplOwotICAgICAgICAgICAgcGFydDJMZW5ndGggPSAwOwotICAgICAg
ICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gSW52YWxpZCB2YWx1ZXMgZm9yIGluZGV4IG9y
IHNpemUuIFNldCB0aGUgcGFydCBsZW5ndGhzIHRvIHplcm8gc28gbm90aGluZyBpcyBjb3BpZWQu
Ci0gICAgICAgIHBhcnQxTGVuZ3RoID0gMDsKLSAgICAgICAgcGFydDJMZW5ndGggPSAwOwotICAg
IH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9B
VURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRklG
Ty5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9GSUZPLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmNDM4ZGQ3ZDBmYTU5ZmI2NDRkNGRmNTcyZjU1OWZkNjYz
MDhiZDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9GSUZPLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw3NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAot
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaWZuZGVmIEF1ZGlvRklGT19oCi0jZGVmaW5lIEF1ZGlvRklGT19oCi0KLSNpbmNsdWRl
ICJBdWRpb0J1cy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEF1ZGlvRklGTyBm
aW5hbCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgLy8gQ3Jl
YXRlIGEgRklGTyBsYXJnZSBlbm91Z2ggdG8gaG9sZCB8Zmlmb0xlbmd0aHwgZnJhbWVzIG9mIGRh
dGEgb2YgfG51bWJlck9mQ2hhbm5lbHN8IGNoYW5uZWxzLgotICAgIEF1ZGlvRklGTyh1bnNpZ25l
ZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgZmlmb0xlbmd0aCk7Ci0KLSAgICAvLyBQdXNoIHRo
ZSBkYXRhIGZyb20gdGhlIGJ1cyBpbnRvIHRoZSBGSUZPLgotICAgIHZvaWQgcHVzaChjb25zdCBB
dWRpb0J1cyopOwotCi0gICAgLy8gQ29uc3VtZSB8ZnJhbWVzVG9Db25zdW1lfCBmcmFtZXMgb2Yg
ZGF0YSBmcm9tIHRoZSBGSUZPIGFuZCBwdXQgdGhlbSBpbiB8ZGVzdGluYXRpb258LiBUaGUKLSAg
ICAvLyBjb3JyZXNwb25kaW5nIGZyYW1lcyBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBGSUZPLgotICAg
IHZvaWQgY29uc3VtZShBdWRpb0J1cyogZGVzdGluYXRpb24sIHNpemVfdCBmcmFtZXNUb0NvbnN1
bWUpOwotCi0gICAgLy8gTnVtYmVyIG9mIGZyYW1lcyBvZiBkYXRhIHRoYXQgYXJlIGN1cnJlbnRs
eSBpbiB0aGUgRklGTy4KLSAgICBzaXplX3QgZnJhbWVzSW5GaWZvKCkgY29uc3QgeyByZXR1cm4g
bV9mcmFtZXNJbkZpZm87IH0KLQotcHJpdmF0ZToKLSAgICAvLyBVcGRhdGUgdGhlIEZJRk8gaW5k
ZXggYnkgdGhlIHN0ZXAsIHdpdGggYXBwcm9wcmlhdGUgd3JhcHBpbmcgYXJvdW5kIHRoZSBlbmRw
b2ludC4KLSAgICBpbnQgdXBkYXRlSW5kZXgoaW50IGluZGV4LCBpbnQgc3RlcCkgeyByZXR1cm4g
KGluZGV4ICsgc3RlcCkgJSBtX2ZpZm9MZW5ndGg7IH0KLQotICAgIHZvaWQgZmluZFdyYXBMZW5n
dGhzKHNpemVfdCBpbmRleCwgc2l6ZV90IHByb3ZpZGVyU2l6ZSwgc2l6ZV90JiBwYXJ0MUxlbmd0
aCwgc2l6ZV90JiBwYXJ0Mkxlbmd0aCk7Ci0gICAgCi0gICAgLy8gVGhlIEZJRk8gaXRzZWxmLiBJ
biByZWFsaXR5LCB0aGUgRklGTyBpcyBhIGNpcmN1bGFyIGJ1ZmZlci4KLSAgICBSZWZQdHI8QXVk
aW9CdXM+IG1fZmlmb0F1ZGlvQnVzOwotCi0gICAgLy8gVGhlIHRvdGFsIGF2YWlsYWJsZSBzcGFj
ZSBpbiB0aGUgRklGTy4KLSAgICBzaXplX3QgbV9maWZvTGVuZ3RoOwotCi0gICAgLy8gVGhlIG51
bWJlciBvZiBhY3R1YWwgZWxlbWVudHMgaW4gdGhlIEZJRk8KLSAgICBzaXplX3QgbV9mcmFtZXNJ
bkZpZm87Ci0KLSAgICAvLyBXaGVyZSB0byBzdGFydCByZWFkaW5nIGZyb20gdGhlIEZJRk8uCi0g
ICAgc2l6ZV90IG1fcmVhZEluZGV4OwotCi0gICAgLy8gV2hlcmUgdG8gc3RhcnQgd3JpdGluZyB0
byB0aGUgRklGTy4KLSAgICBzaXplX3QgbV93cml0ZUluZGV4OwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gQXVkaW9GSUZPLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUHVsbEZJRk8uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9QdWxsRklGTy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDJiMWE2MjIyNmI5ZjgxNzJiN2ZjNjBkYzIyMDIwNDYwNTliMzU4N2EuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vQXVkaW9QdWxsRklGTy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgot
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBs
ZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICog
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
LSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoV0VCX0FVRElPKQotCi0jaW5jbHVkZSAiQXVk
aW9QdWxsRklGTy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUF1ZGlvUHVsbEZJRk86OkF1
ZGlvUHVsbEZJRk8oQXVkaW9Tb3VyY2VQcm92aWRlciYgYXVkaW9Qcm92aWRlciwgdW5zaWduZWQg
bnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IGZpZm9MZW5ndGgsIHNpemVfdCBwcm92aWRlclNpemUp
Ci0gICAgOiBtX3Byb3ZpZGVyKGF1ZGlvUHJvdmlkZXIpCi0gICAgLCBtX2ZpZm8obnVtYmVyT2ZD
aGFubmVscywgZmlmb0xlbmd0aCkKLSAgICAsIG1fcHJvdmlkZXJTaXplKHByb3ZpZGVyU2l6ZSkK
LSAgICAsIG1fdGVtcEJ1cyhBdWRpb0J1czo6Y3JlYXRlKG51bWJlck9mQ2hhbm5lbHMsIHByb3Zp
ZGVyU2l6ZSkpCi17Ci19Ci0KLXZvaWQgQXVkaW9QdWxsRklGTzo6Y29uc3VtZShBdWRpb0J1cyog
ZGVzdGluYXRpb24sIHNpemVfdCBmcmFtZXNUb0NvbnN1bWUpCi17Ci0gICAgaWYgKCFkZXN0aW5h
dGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGZyYW1lc1RvQ29uc3VtZSA+IG1fZmlm
by5mcmFtZXNJbkZpZm8oKSkgewotICAgICAgICAvLyBXZSBkb24ndCBoYXZlIGVub3VnaCBkYXRh
IGluIHRoZSBGSUZPIHRvIGZ1bGZpbGwgdGhlIHJlcXVlc3QuIEFzayBmb3IgbW9yZSBkYXRhLgot
ICAgICAgICBmaWxsQnVmZmVyKGZyYW1lc1RvQ29uc3VtZSAtIG1fZmlmby5mcmFtZXNJbkZpZm8o
KSk7Ci0gICAgfQotCi0gICAgbV9maWZvLmNvbnN1bWUoZGVzdGluYXRpb24sIGZyYW1lc1RvQ29u
c3VtZSk7Ci19Ci0KLXZvaWQgQXVkaW9QdWxsRklGTzo6ZmlsbEJ1ZmZlcihzaXplX3QgbnVtYmVy
T2ZGcmFtZXMpCi17Ci0gICAgLy8gS2VlcCBhc2tpbmcgdGhlIHByb3ZpZGVyIHRvIGdpdmUgdXMg
ZGF0YSB1bnRpbCB3ZSBoYXZlIHJlY2VpdmVkIGF0IGxlYXN0IHxudW1iZXJPZkZyYW1lc3wgb2YK
LSAgICAvLyBkYXRhLiBTdHVmZiB0aGUgZGF0YSBpbnRvIHRoZSBGSUZPLgotICAgIHNpemVfdCBm
cmFtZXNQcm92aWRlZCA9IDA7Ci0KLSAgICB3aGlsZSAoZnJhbWVzUHJvdmlkZWQgPCBudW1iZXJP
ZkZyYW1lcykgewotICAgICAgICBtX3Byb3ZpZGVyLnByb3ZpZGVJbnB1dChtX3RlbXBCdXMuZ2V0
KCksIG1fcHJvdmlkZXJTaXplKTsKLQotICAgICAgICBtX2ZpZm8ucHVzaChtX3RlbXBCdXMuZ2V0
KCkpOwotCi0gICAgICAgIGZyYW1lc1Byb3ZpZGVkICs9IG1fcHJvdmlkZXJTaXplOwotICAgIH0K
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJ
TykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUHVsbEZJ
Rk8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUHVsbEZJRk8uaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDc0OGZhNDEzODczNzlkYjM5NWJlYWU2NWY4ODJi
YTI1OGU5ZmMyNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw3NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhl
ciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAg
ICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaWZuZGVmIEF1ZGlvUHVsbEZJRk9faAotI2RlZmluZSBBdWRpb1B1bGxG
SUZPX2gKLQotI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCi0jaW5jbHVkZSAiQXVkaW9GSUZPLmgiCi0j
aW5jbHVkZSAiQXVkaW9Tb3VyY2VQcm92aWRlci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LS8vIEEgRklGTyAoRmlyc3QgSW4gRmlyc3QgT3V0KSBidWZmZXIgdG8gaGFuZGxlIG1pc21hdGNo
ZXMgaW4gYnVmZmVyIHNpemVzIGJldHdlZW4gYSBwcm92aWRlciBhbmQKLS8vIHJlY2VpdmVyLiBU
aGUgcmVjZWl2ZXIgd2lsbCAicHVsbCIgZGF0YSBmcm9tIHRoaXMgRklGTy4gSWYgZGF0YSBpcyBh
bHJlYWR5IGF2YWlsYWJsZSBpbiB0aGUKLS8vIEZJRk8sIGl0IGlzIHByb3ZpZGVkIHRvIHRoZSBy
ZWNlaXZlci4gSWYgaW5zdWZmaWNpZW50IGRhdGEgaXMgYXZhaWxhYmxlIHRvIHNhdGlzZnkgdGhl
IHJlcXVlc3QsCi0vLyB0aGUgRklGTyB3aWxsIGFzayB0aGUgcHJvdmlkZXIgZm9yIG1vcmUgZGF0
YSB3aGVuIG5lY2Vzc2FyeSB0byBmdWxmaWxsIGEgcmVxdWVzdC4gQ29udHJhc3QgdGhpcwotLy8g
d2l0aCBhICJwdXNoIiBGSUZPLCB3aGVyZSB0aGUgc2VuZGVyIHB1c2hlcyBkYXRhIHRvIHRoZSBG
SUZPIHdoaWNoIHdpbGwgaXRzZWxmIHB1c2ggdGhlIGRhdGEgdG8KLS8vIHRoZSByZWNlaXZlciB3
aGVuIHRoZSBGSUZPIGlzIGZ1bGwuCi1jbGFzcyBBdWRpb1B1bGxGSUZPIGZpbmFsIHsKLSAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICAvLyBDcmVhdGUgYSBGSUZPIHRo
YXQgZ2V0cyBkYXRhIGZyb20gfHByb3ZpZGVyfC4gVGhlIEZJRk8gd2lsbCBiZSBsYXJnZSBlbm91
Z2ggdG8gaG9sZAotICAgIC8vIHxmaWZvTGVuZ3RofCBmcmFtZXMgb2YgZGF0YSBvZiB8bnVtYmVy
T2ZDaGFubmVsc3wgY2hhbm5lbHMuIFRoZSBBdWRpb1NvdXJjZVByb3ZpZGVyIHdpbGwgYmUKLSAg
ICAvLyBhc2tlZCB0byBwcm9kdWNlIHxwcm92aWRlclNpemV8IGZyYW1lcyB3aGVuIHRoZSBGSUZP
IG5lZWRzIG1vcmUgZGF0YS4KLSAgICBBdWRpb1B1bGxGSUZPKEF1ZGlvU291cmNlUHJvdmlkZXIm
IGF1ZGlvUHJvdmlkZXIsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBmaWZvTGVu
Z3RoLCBzaXplX3QgcHJvdmlkZXJTaXplKTsKLQotICAgIC8vIFJlYWQgfGZyYW1lc1RvQ29uc3Vt
ZXwgZnJhbWVzIGZyb20gdGhlIEZJRk8gaW50byB0aGUgZGVzdGluYXRpb24uIElmIHRoZSBGSUZP
IGRvZXMgbm90IGhhdmUKLSAgICAvLyBlbm91Z2ggZGF0YSwgd2UgYXNrIHRoZSB8cHJvdmlkZXJ8
IHRvIGdldCBtb3JlIGRhdGEgdG8gZnVsZmlsbCB0aGUgcmVxdWVzdC4KLSAgICB2b2lkIGNvbnN1
bWUoQXVkaW9CdXMqIGRlc3RpbmF0aW9uLCBzaXplX3QgZnJhbWVzVG9Db25zdW1lKTsKLQotcHJp
dmF0ZToKLSAgICAvLyBGaWxsIHRoZSBGSUZPIGJ1ZmZlciB3aXRoIGF0IGxlYXN0IHxudW1iZXJP
ZkZyYW1lc3wgbW9yZSBkYXRhLgotICAgIHZvaWQgZmlsbEJ1ZmZlcihzaXplX3QgbnVtYmVyT2ZG
cmFtZXMpOwotCi0gICAgLy8gVGhlIHByb3ZpZGVyIG9mIHRoZSBkYXRhIGluIG91ciBGSUZPLgot
ICAgIEF1ZGlvU291cmNlUHJvdmlkZXImIG1fcHJvdmlkZXI7Ci0KLSAgICAvLyBUaGUgYWN0dWFs
IEZJRk8KLSAgICBBdWRpb0ZJRk8gbV9maWZvOwotCi0gICAgLy8gTnVtYmVyIG9mIGZyYW1lcyBv
ZiBkYXRhIHRoYXQgdGhlIHByb3ZpZGVyIHdpbGwgcHJvZHVjZSBwZXIgY2FsbC4KLSAgICB1bnNp
Z25lZCBpbnQgbV9wcm92aWRlclNpemU7Ci0KLSAgICAvLyBUZW1wb3Jhcnkgd29ya3NwYWNlIHRv
IGhvbGQgdGhlIGRhdGEgZnJvbSB0aGUgcHJvdmlkZXIuCi0gICAgUmVmUHRyPEF1ZGlvQnVzPiBt
X3RlbXBCdXM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBBdWRp
b1B1bGxGSUZPLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011
bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9N
dWx0aUNoYW5uZWxSZXNhbXBsZXIuY3BwCmluZGV4IDVlNjI2OGQzYmIxM2I1ZjI3MWQyZTZhODk2
MDI4MGU3NTNiOWRhNGQuLjg0ZWZhYjE2MzFiMWE2NmNmNjUxOWMxYTJiNjNlOTY5YzI2ZGVmMDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJl
c2FtcGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFu
bmVsUmVzYW1wbGVyLmNwcApAQCAtOTIsMTMgKzkyLDEzIEBAIHByaXZhdGU6CiAgICAgc2l6ZV90
IG1fZnJhbWVzVG9Qcm9jZXNzIHsgMCB9OyAvLyBVc2VkIHRvIHZlcmlmeSB0aGF0IGFsbCBjaGFu
bmVscyBhc2sgZm9yIHRoZSBzYW1lIGFtb3VudC4KIH07CiAKLU11bHRpQ2hhbm5lbFJlc2FtcGxl
cjo6TXVsdGlDaGFubmVsUmVzYW1wbGVyKGRvdWJsZSBzY2FsZUZhY3RvciwgdW5zaWduZWQgbnVt
YmVyT2ZDaGFubmVscykKK011bHRpQ2hhbm5lbFJlc2FtcGxlcjo6TXVsdGlDaGFubmVsUmVzYW1w
bGVyKGRvdWJsZSBzY2FsZUZhY3RvciwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgT3B0aW9u
YWw8dW5zaWduZWQ+IHJlcXVlc3RGcmFtZXMpCiAgICAgOiBtX251bWJlck9mQ2hhbm5lbHMobnVt
YmVyT2ZDaGFubmVscykKICAgICAsIG1fY2hhbm5lbFByb3ZpZGVyKG1ha2VVbmlxdWU8Q2hhbm5l
bFByb3ZpZGVyPihtX251bWJlck9mQ2hhbm5lbHMpKQogewogICAgIC8vIENyZWF0ZSBlYWNoIGNo
YW5uZWwncyByZXNhbXBsZXIuCiAgICAgZm9yICh1bnNpZ25lZCBjaGFubmVsSW5kZXggPSAwOyBj
aGFubmVsSW5kZXggPCBudW1iZXJPZkNoYW5uZWxzOyArK2NoYW5uZWxJbmRleCkKLSAgICAgICAg
bV9rZXJuZWxzLmFwcGVuZChtYWtlVW5pcXVlPFNpbmNSZXNhbXBsZXI+KHNjYWxlRmFjdG9yKSk7
CisgICAgICAgIG1fa2VybmVscy5hcHBlbmQobWFrZVVuaXF1ZTxTaW5jUmVzYW1wbGVyPihzY2Fs
ZUZhY3RvciwgcmVxdWVzdEZyYW1lcykpOwogfQogCiBNdWx0aUNoYW5uZWxSZXNhbXBsZXI6On5N
dWx0aUNoYW5uZWxSZXNhbXBsZXIoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5oCmluZGV4IGFjODFiZWM0
YmUwYjQwZDI4NDE3NjlhZThhY2EwNzE4NjhiYWIwY2YuLjcxNmJjNjAxZTg3OGUzZjc0Zjc0ZWEz
NGRjYmQxYzc5OGM0ZGRjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5oCkBAIC00MCw3ICs0MCw4IEBAIGNsYXNzIEF1
ZGlvQnVzOwogY2xhc3MgTXVsdGlDaGFubmVsUmVzYW1wbGVyIGZpbmFsIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzogICAKLSAgICBleHBsaWNpdCBNdWx0aUNoYW5uZWxS
ZXNhbXBsZXIoZG91YmxlIHNjYWxlRmFjdG9yLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKTsK
KyAgICAvLyByZXF1ZXN0RnJhbWVzIGNvbnN0cm9scyB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIGlu
IGZyYW1lcyB3aGVuIEF1ZGlvU291cmNlUHJvdmlkZXI6OnByb3ZpZGVJbnB1dCgpIGlzIGNhbGxl
ZC4KKyAgICBleHBsaWNpdCBNdWx0aUNoYW5uZWxSZXNhbXBsZXIoZG91YmxlIHNjYWxlRmFjdG9y
LCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBPcHRpb25hbDx1bnNpZ25lZD4gcmVxdWVzdEZy
YW1lcyA9IFdURjo6bnVsbG9wdCk7CiAgICAgfk11bHRpQ2hhbm5lbFJlc2FtcGxlcigpOwogCiAg
ICAgLy8gUHJvY2VzcyBnaXZlbiBBdWRpb1NvdXJjZVByb3ZpZGVyIGZvciBzdHJlYW1pbmcgYXBw
bGljYXRpb25zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUHVz
aFB1bGxGSUZPLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1B1c2hQdWxsRklG
Ty5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzg0NzRhNzNiNjg3YTI5Y2ZlNWNhNGY1OTgwZDRmMjE0ZDQ1OGU5
ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1B1c2hQ
dWxsRklGTy5jcHAKQEAgLTAsMCArMSwxMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxNyBUaGUg
Q2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisjaW5jbHVkZSAiUHVzaFB1bGxG
SUZPLmgiCisKKyNpbmNsdWRlICJBdWRpb0J1cy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NvbnN0IHNpemVfdCBQdXNoUHVsbEZJRk86OmtNYXhGSUZPTGVuZ3RoID0gNjU1MzY7CisKK1B1
c2hQdWxsRklGTzo6UHVzaFB1bGxGSUZPKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVf
dCBmaWZvTGVuZ3RoKQorICAgIDogbV9maWZvTGVuZ3RoKGZpZm9MZW5ndGgpCit7CisgICAgQVNT
RVJUKG1fZmlmb0xlbmd0aCA8PSBrTWF4RklGT0xlbmd0aCk7CisgICAgbV9maWZvQnVzID0gQXVk
aW9CdXM6OmNyZWF0ZShudW1iZXJPZkNoYW5uZWxzLCBtX2ZpZm9MZW5ndGgpOworfQorCitQdXNo
UHVsbEZJRk86On5QdXNoUHVsbEZJRk8oKSA9IGRlZmF1bHQ7CisKKy8vIFB1c2ggdGhlIGRhdGEg
ZnJvbSB8aW5wdXRCdXN8IHRvIEZJRk8uIFRoZSBzaXplIG9mIHB1c2ggaXMgZGV0ZXJtaW5lZCBi
eQorLy8gdGhlIGxlbmd0aCBvZiB8aW5wdXRCdXN8Lgordm9pZCBQdXNoUHVsbEZJRk86OnB1c2go
Y29uc3QgQXVkaW9CdXMqIGlucHV0QnVzKQoreworICAgIEFTU0VSVChpbnB1dEJ1cyk7CisgICAg
QVNTRVJUKGlucHV0QnVzLT5sZW5ndGgoKSA8PSBtX2ZpZm9MZW5ndGgpOworICAgIEFTU0VSVCht
X2luZGV4V3JpdGUgPCBtX2ZpZm9MZW5ndGgpOworCisgICAgY29uc3Qgc2l6ZV90IGlucHV0QnVz
TGVuZ3RoID0gaW5wdXRCdXMtPmxlbmd0aCgpOworICAgIGNvbnN0IHNpemVfdCByZW1haW5kZXIg
PSBtX2ZpZm9MZW5ndGggLSBtX2luZGV4V3JpdGU7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV9maWZvQnVzLT5udW1iZXJPZkNoYW5uZWxzKCk7ICsraSkgeworICAgICAgICBmbG9h
dCogZmlmb0J1c0NoYW5uZWwgPSBtX2ZpZm9CdXMtPmNoYW5uZWwoaSktPm11dGFibGVEYXRhKCk7
CisgICAgICAgIGNvbnN0IGZsb2F0KiBpbnB1dEJ1c0NoYW5uZWwgPSBpbnB1dEJ1cy0+Y2hhbm5l
bChpKS0+ZGF0YSgpOworICAgICAgICBpZiAocmVtYWluZGVyID49IGlucHV0QnVzTGVuZ3RoKSB7
CisgICAgICAgICAgICAvLyBUaGUgcmVtYWluZGVyIGlzIGJpZyBlbm91Z2ggZm9yIHRoZSBpbnB1
dCBkYXRhLgorICAgICAgICAgICAgbWVtY3B5KGZpZm9CdXNDaGFubmVsICsgbV9pbmRleFdyaXRl
LCBpbnB1dEJ1c0NoYW5uZWwsIGlucHV0QnVzTGVuZ3RoICogc2l6ZW9mKCpmaWZvQnVzQ2hhbm5l
bCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gVGhlIGlucHV0IGRhdGEgb3Zl
cmZsb3dzIHRoZSByZW1haW5kZXIgc2l6ZS4gV3JhcCBhcm91bmQgdGhlIGluZGV4LgorICAgICAg
ICAgICAgbWVtY3B5KGZpZm9CdXNDaGFubmVsICsgbV9pbmRleFdyaXRlLCBpbnB1dEJ1c0NoYW5u
ZWwsIHJlbWFpbmRlciAqIHNpemVvZigqZmlmb0J1c0NoYW5uZWwpKTsKKyAgICAgICAgICAgIG1l
bWNweShmaWZvQnVzQ2hhbm5lbCwgaW5wdXRCdXNDaGFubmVsICsgcmVtYWluZGVyLCAoaW5wdXRC
dXNMZW5ndGggLSByZW1haW5kZXIpICogc2l6ZW9mKCpmaWZvQnVzQ2hhbm5lbCkpOworICAgICAg
ICB9CisgICAgfQorCisgICAgLy8gVXBkYXRlIHRoZSB3cml0ZSBpbmRleDsgd3JhcCBpdCBhcm91
bmQgaWYgbmVjZXNzYXJ5LgorICAgIG1faW5kZXhXcml0ZSA9IChtX2luZGV4V3JpdGUgKyBpbnB1
dEJ1c0xlbmd0aCkgJSBtX2ZpZm9MZW5ndGg7CisKKyAgICAvLyBJbiBjYXNlIG9mIG92ZXJmbG93
LCBtb3ZlIHRoZSB8aW5kZXhSZWFkfCB0byB0aGUgdXBkYXRlZCB8aW5kZXhXcml0ZXwgdG8KKyAg
ICAvLyBhdm9pZCByZWFkaW5nIG92ZXJ3cml0dGVuIGZyYW1lcyBieSB0aGUgbmV4dCBwdWxsLgor
ICAgIGlmIChpbnB1dEJ1c0xlbmd0aCA+IG1fZmlmb0xlbmd0aCAtIG1fZnJhbWVzQXZhaWxhYmxl
KQorICAgICAgICBtX2luZGV4UmVhZCA9IG1faW5kZXhXcml0ZTsKKworICAgIC8vIFVwZGF0ZSB0
aGUgbnVtYmVyIG9mIGZyYW1lcyBhdmFpbGFibGUgaW4gRklGTy4KKyAgICBtX2ZyYW1lc0F2YWls
YWJsZSA9IHN0ZDo6bWluKG1fZnJhbWVzQXZhaWxhYmxlICsgaW5wdXRCdXNMZW5ndGgsIG1fZmlm
b0xlbmd0aCk7CisgICAgQVNTRVJUKCgobV9pbmRleFJlYWQgKyBtX2ZyYW1lc0F2YWlsYWJsZSkg
JSBtX2ZpZm9MZW5ndGgpID09IG1faW5kZXhXcml0ZSk7Cit9CisKKy8vIFB1bGwgdGhlIGRhdGEg
b3V0IG9mIEZJRk8gdG8gfG91dHB1dEJ1c3wuIElmIHJlbWFpbmluZyBmcmFtZSBpbiB0aGUgRklG
TworLy8gaXMgbGVzcyB0aGFuIHRoZSBmcmFtZXMgdG8gcHVsbCwgcHJvdmlkZXMgcmVtYWluaW5n
IGZyYW1lIHBsdXMgdGhlIHNpbGVuY2UuCitzaXplX3QgUHVzaFB1bGxGSUZPOjpwdWxsKEF1ZGlv
QnVzKiBvdXRwdXRCdXMsIHNpemVfdCBmcmFtZXNSZXF1ZXN0ZWQpCit7CisgICAgQVNTRVJUKG91
dHB1dEJ1cyk7CisgICAgQVNTRVJUKGZyYW1lc1JlcXVlc3RlZCA8PSBvdXRwdXRCdXMtPmxlbmd0
aCgpKTsKKyAgICBBU1NFUlQoZnJhbWVzUmVxdWVzdGVkIDw9IG1fZmlmb0xlbmd0aCk7CisgICAg
QVNTRVJUKG1faW5kZXhSZWFkIDwgbV9maWZvTGVuZ3RoKTsKKworICAgIGNvbnN0IHNpemVfdCBy
ZW1haW5kZXIgPSBtX2ZpZm9MZW5ndGggLSBtX2luZGV4UmVhZDsKKyAgICBjb25zdCBzaXplX3Qg
ZnJhbWVzVG9GaWxsID0gc3RkOjptaW4obV9mcmFtZXNBdmFpbGFibGUsIGZyYW1lc1JlcXVlc3Rl
ZCk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9maWZvQnVzLT5udW1iZXJPZkNo
YW5uZWxzKCk7ICsraSkgeworICAgICAgICBjb25zdCBmbG9hdCogZmlmb0J1c0NoYW5uZWwgPSBt
X2ZpZm9CdXMtPmNoYW5uZWwoaSktPmRhdGEoKTsKKyAgICAgICAgZmxvYXQqIG91dHB1dEJ1c0No
YW5uZWwgPSBvdXRwdXRCdXMtPmNoYW5uZWwoaSktPm11dGFibGVEYXRhKCk7CisKKyAgICAgICAg
Ly8gRmlsbCB1cCB0aGUgb3V0cHV0IGJ1cyB3aXRoIHRoZSBhdmFpbGFibGUgZnJhbWVzIGZpcnN0
LgorICAgICAgICBpZiAocmVtYWluZGVyID49IGZyYW1lc1RvRmlsbCkgeworICAgICAgICAgICAg
Ly8gVGhlIHJlbWFpbmRlciBpcyBiaWcgZW5vdWdoIGZvciB0aGUgZnJhbWVzIHRvIHB1bGwuCisg
ICAgICAgICAgICBtZW1jcHkob3V0cHV0QnVzQ2hhbm5lbCwgZmlmb0J1c0NoYW5uZWwgKyBtX2lu
ZGV4UmVhZCwgZnJhbWVzVG9GaWxsICogc2l6ZW9mKCpmaWZvQnVzQ2hhbm5lbCkpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgLy8gVGhlIGZyYW1lcyB0byBwdWxsIGlzIGJpZ2dlciB0
aGFuIHRoZSByZW1haW5kZXIgc2l6ZS4KKyAgICAgICAgICAgIC8vIFdyYXAgYXJvdW5kIHRoZSBp
bmRleC4KKyAgICAgICAgICAgIG1lbWNweShvdXRwdXRCdXNDaGFubmVsLCBmaWZvQnVzQ2hhbm5l
bCArIG1faW5kZXhSZWFkLCByZW1haW5kZXIgKiBzaXplb2YoKmZpZm9CdXNDaGFubmVsKSk7Cisg
ICAgICAgICAgICBtZW1jcHkob3V0cHV0QnVzQ2hhbm5lbCArIHJlbWFpbmRlciwgZmlmb0J1c0No
YW5uZWwsIChmcmFtZXNUb0ZpbGwgLSByZW1haW5kZXIpICogc2l6ZW9mKCpmaWZvQnVzQ2hhbm5l
bCkpOworICAgICAgICB9CisKKyAgICAgICAgLy8gVGhlIGZyYW1lcyBhdmFpbGFibGUgd2FzIG5v
dCBlbm91Z2ggdG8gZnVsZmlsbCB0aGUgcmVxdWVzdGVkIGZyYW1lcy4gRmlsbAorICAgICAgICAv
LyB0aGUgcmVzdCBvZiB0aGUgY2hhbm5lbCB3aXRoIHNpbGVuY2UuCisgICAgICAgIGlmIChmcmFt
ZXNSZXF1ZXN0ZWQgPiBmcmFtZXNUb0ZpbGwpCisgICAgICAgICAgICBtZW1zZXQob3V0cHV0QnVz
Q2hhbm5lbCArIGZyYW1lc1RvRmlsbCwgMCwgKGZyYW1lc1JlcXVlc3RlZCAtIGZyYW1lc1RvRmls
bCkgKiBzaXplb2YoKm91dHB1dEJ1c0NoYW5uZWwpKTsKKyAgICB9CisKKyAgICAvLyBVcGRhdGUg
dGhlIHJlYWQgaW5kZXg7IHdyYXAgaXQgYXJvdW5kIGlmIG5lY2Vzc2FyeS4KKyAgICBtX2luZGV4
UmVhZCA9IChtX2luZGV4UmVhZCArIGZyYW1lc1RvRmlsbCkgJSBtX2ZpZm9MZW5ndGg7CisKKyAg
ICAvLyBJbiBjYXNlIG9mIHVuZGVyZmxvdywgbW92ZSB0aGUgfGluZGV4V3JpdGV8IHRvIHRoZSB1
cGRhdGVkIHxpbmRleFJlYWR8LgorICAgIGlmIChmcmFtZXNSZXF1ZXN0ZWQgPiBmcmFtZXNUb0Zp
bGwpCisgICAgICAgIG1faW5kZXhXcml0ZSA9IG1faW5kZXhSZWFkOworCisgICAgLy8gVXBkYXRl
IHRoZSBudW1iZXIgb2YgZnJhbWVzIGluIEZJRk8uCisgICAgbV9mcmFtZXNBdmFpbGFibGUgLT0g
ZnJhbWVzVG9GaWxsOworICAgIEFTU0VSVCgoKG1faW5kZXhSZWFkICsgbV9mcmFtZXNBdmFpbGFi
bGUpICUgbV9maWZvTGVuZ3RoKSA9PSBtX2luZGV4V3JpdGUpOworCisgICAgLy8gfGZyYW1lc1Jl
cXVlc3RlZCA+IG1fZnJhbWVzQXZhaWxhYmxlfCBtZWFucyB0aGUgZnJhbWVzIGluIEZJRk8gaXMg
bm90CisgICAgLy8gZW5vdWdoIHRvIGZ1bGZpbGwgdGhlIHJlcXVlc3RlZCBmcmFtZXMgZnJvbSB0
aGUgYXVkaW8gZGV2aWNlLgorICAgIHJldHVybiBmcmFtZXNSZXF1ZXN0ZWQgPiBtX2ZyYW1lc0F2
YWlsYWJsZSA/IGZyYW1lc1JlcXVlc3RlZCAtIG1fZnJhbWVzQXZhaWxhYmxlIDogMDsKK30KKwor
dW5zaWduZWQgUHVzaFB1bGxGSUZPOjpudW1iZXJPZkNoYW5uZWxzKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9maWZvQnVzLT5udW1iZXJPZkNoYW5uZWxzKCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QdXNoUHVsbEZJRk8uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1B1c2hQdWxsRklGTy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlM2MyM2EyODQ1YzNk
YzgyMmVmYjE3NzRlY2YzYTYxOWYxYmFiMTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9QdXNoUHVsbEZJRk8uaApAQCAtMCwwICsxLDgyIEBACisvKgor
ICogQ29weXJpZ2h0IDIwMTcgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisg
KiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Cisj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlvQnVzOworCisvLyBQdXNoUHVsbEZJRk8g
Y2xhc3MgaXMgYW4gaW50ZXJtZWRpYXRlIGF1ZGlvIHNhbXBsZSBzdG9yYWdlIGJldHdlZW4KKy8v
IFdlYktpdC1XZWJBdWRpbyBhbmQgdGhlIHJlbmRlcmVyLiBUaGUgcmVuZGVyZXIncyBoYXJkd2Fy
ZSBjYWxsYmFjayBidWZmZXIgc2l6ZQorLy8gdmFyaWVzIG9uIHRoZSBwbGF0Zm9ybSwgYnV0IHRo
ZSBXZWJBdWRpbyBhbHdheXMgcmVuZGVycyAxMjggZnJhbWVzIChyZW5kZXIKKy8vIHF1YW50dW0s
IFJRKSB0aHVzIEZJRk8gaXMgbmVlZGVkIHRvIGhhbmRsZSB0aGUgZ2VuZXJhbCBjYXNlLgorY2xh
c3MgUHVzaFB1bGxGSUZPIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShQdXNoUHVsbEZJRk8pOworCitwdWJsaWM6CisgICAgLy8gTWF4aW11
bSBGSUZPIGxlbmd0aC4gKDUxMiByZW5kZXIgcXVhbnRhKQorICAgIHN0YXRpYyBjb25zdCBzaXpl
X3Qga01heEZJRk9MZW5ndGg7CisKKyAgICAvLyB8Zmlmb0xlbmd0aHwgY2Fubm90IGV4Y2VlZCB8
a01heEZJRk9MZW5ndGh8LiBPdGhlcndpc2UgaXQgY3Jhc2hlcy4KKyAgICBQdXNoUHVsbEZJRk8o
dW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IGZpZm9MZW5ndGgpOworICAgIH5QdXNo
UHVsbEZJRk8oKTsKKworICAgIC8vIFB1c2hlcyB0aGUgcmVuZGVyZWQgZnJhbWVzIGJ5IFdlYkF1
ZGlvIGVuZ2luZS4KKyAgICAvLyAgLSBUaGUgfGlucHV0QnVzfCBsZW5ndGggaXMgMTI4IGZyYW1l
cyAoMSByZW5kZXIgcXVhbnR1bSksIGZpeGVkLgorICAgIC8vICAtIEluIGNhc2Ugb2Ygb3ZlcmZs
b3cgKEZJRk8gZnVsbCB3aGlsZSBwdXNoKSwgdGhlIGV4aXN0aW5nIGZyYW1lcyBpbiBGSUZPCisg
ICAgLy8gICAgd2lsbCBiZSBvdmVyd3JpdHRlbiBhbmQgfGluZGV4UmVhZHwgd2lsbCBiZSBmb3Jj
aWJseSBtb3ZlZCB0bworICAgIC8vICAgIHxpbmRleFdyaXRlfCB0byBhdm9pZCByZWFkaW5nIG92
ZXJ3cml0dGVuIGZyYW1lcy4KKyAgICB2b2lkIHB1c2goY29uc3QgQXVkaW9CdXMqIGlucHV0QnVz
KTsKKworICAgIC8vIFB1bGxzIHxmcmFtZXNSZXF1ZXN0ZWR8IGJ5IHRoZSBhdWRpbyBkZXZpY2Ug
dGhyZWFkIGFuZCByZXR1cm5zIHRoZSBhY3R1YWwKKyAgICAvLyBudW1iZXIgb2YgZnJhbWVzIHRv
IGJlIHJlbmRlcmVkIGJ5IHRoZSBzb3VyY2UuIChpLmUuIFdlYkF1ZGlvIGdyYXBoKQorICAgIHNp
emVfdCBwdWxsKEF1ZGlvQnVzKiBvdXRwdXRCdXMsIHNpemVfdCBmcmFtZXNSZXF1ZXN0ZWQpOwor
CisgICAgc2l6ZV90IGZyYW1lc0F2YWlsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVzQXZh
aWxhYmxlOyB9CisgICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlmb0xlbmd0
aDsgfQorICAgIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMoKSBjb25zdDsKKyAgICBBdWRpb0J1
cyogYnVzKCkgY29uc3QgeyByZXR1cm4gbV9maWZvQnVzLmdldCgpOyB9CisKK3ByaXZhdGU6Cisg
ICAgLy8gVGhlIHNpemUgb2YgdGhlIEZJRk8uCisgICAgY29uc3Qgc2l6ZV90IG1fZmlmb0xlbmd0
aCA9IDA7CisKKyAgICBSZWZQdHI8QXVkaW9CdXM+IG1fZmlmb0J1czsKKworICAgIC8vIFRoZSBu
dW1iZXIgb2YgZnJhbWVzIGluIHRoZSBGSUZPIGFjdHVhbGx5IGF2YWlsYWJsZSBmb3IgcHVsbGlu
Zy4KKyAgICBzaXplX3QgbV9mcmFtZXNBdmFpbGFibGUgeyAwIH07CisKKyAgICBzaXplX3QgbV9p
bmRleFJlYWQgeyAwIH07CisgICAgc2l6ZV90IG1faW5kZXhXcml0ZSB7IDAgfTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1NpbmNSZXNhbXBsZXIuY3BwCmluZGV4IDUyMDUyN2I1NGJhNTc4NmQ4Y2ViZGZhYjUzYTQ1
NjhhOTNkZTZlZDguLjI2NTFjNDg3MDk1NzRkOTgyM2NmZGZlNjllODVkNzA2ODJlZDAzOTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwCkBA
IC0zOSw1MSArMzksMTEzIEBACiAjaW5jbHVkZSA8ZW1taW50cmluLmg+CiAjZW5kaWYKIAotLy8g
SW5wdXQgYnVmZmVyIGxheW91dCwgZGl2aWRpbmcgdGhlIHRvdGFsIGJ1ZmZlciBpbnRvIHJlZ2lv
bnMgKHIwIC0gcjUpOgorLy8gSW5pdGlhbCBpbnB1dCBidWZmZXIgbGF5b3V0LCBkaXZpZGluZyBp
bnRvIHJlZ2lvbnMgcjAgdG8gcjQgKG5vdGU6IHIwLCByMworLy8gYW5kIHI0IHdpbGwgbW92ZSBh
ZnRlciB0aGUgZmlyc3QgbG9hZCk6CiAvLwogLy8gfC0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwt
LS0tLS0tLS0tLS0tLS0tfAogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJsb2NrU2l6ZSArIGtlcm5lbFNpemUgLyAyICAgICAgICAgICAgICAgICAg
ICAgICAgICAgCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX3JlcXVlc3RGcmFtZXMKIC8vICAgICAgICAgICAgICAgICAgIDwtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLT4KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByMAorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcjAg
KGR1cmluZyBmaXJzdCBsb2FkKQogLy8KIC8vICAga2VybmVsU2l6ZSAvIDIgICBrZXJuZWxTaXpl
IC8gMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbFNpemUgLyAyICAgICBr
ZXJuZWxTaXplIC8gMiAKIC8vIDwtLS0tLS0tLS0tLS0tLS0+IDwtLS0tLS0tLS0tLS0tLS0+ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPC0tLS0tLS0tLS0tLS0tLT4gPC0tLS0tLS0tLS0t
LS0tLT4KIC8vICAgICAgICAgcjEgICAgICAgICAgICAgICAgcjIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByMyAgICAgICAgICAgICAgICByNAogLy8gCi0vLyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja1NpemUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLT4KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByNQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fYmxvY2tTaXpl
ID09IHI0IC0gcjIKKy8vICAgICAgICAgICAgICAgICAgIDwtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0+CisvLworLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fcmVxdWVzdEZyYW1lcworLy8gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8LS0tLS0tLS0tLS0tLS0tLS0tIC4uLiAtLS0tLS0tLS0tLS0tLS0t
LT4KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByMCAo
ZHVyaW5nIHNlY29uZCBsb2FkKQorLy8KKy8vIE9uIHRoZSBzZWNvbmQgcmVxdWVzdCByMCBzbGlk
ZXMgdG8gdGhlIHJpZ2h0IGJ5IGtlcm5lbFNpemUgLyAyIGFuZCByMywgcjQKKy8vIGFuZCBtX2Js
b2NrU2l6ZSBhcmUgcmVpbml0aWFsaXplZCB2aWEgc3RlcCAoMykgaW4gdGhlIGFsZ29yaXRobSBi
ZWxvdy4KKy8vCisvLyBUaGVzZSBuZXcgcmVnaW9ucyByZW1haW4gY29uc3RhbnQgdW50aWwgYSBG
bHVzaCgpIG9jY3Vycy4gV2hpbGUgY29tcGxpY2F0ZWQsCisvLyB0aGlzIGFsbG93cyB1cyB0byBy
ZWR1Y2Ugaml0dGVyIGJ5IGFsd2F5cyByZXF1ZXN0aW5nIHRoZSBzYW1lIGFtb3VudCBmcm9tIHRo
ZQorLy8gcHJvdmlkZWQgY2FsbGJhY2suCiAKIC8vIFRoZSBBbGdvcml0aG06CiAvLwotLy8gMSkg
Q29uc3VtZSBpbnB1dCBmcmFtZXMgaW50byByMCAocjEgaXMgemVyby1pbml0aWFsaXplZCkuCi0v
LyAyKSBQb3NpdGlvbiBrZXJuZWwgY2VudGVyZWQgYXQgc3RhcnQgb2YgcjAgKHIyKSBhbmQgZ2Vu
ZXJhdGUgb3V0cHV0IGZyYW1lcyB1bnRpbCBrZXJuZWwgaXMgY2VudGVyZWQgYXQgc3RhcnQgb2Yg
cjQuCi0vLyAgICBvciB3ZSd2ZSBmaW5pc2hlZCBnZW5lcmF0aW5nIGFsbCB0aGUgb3V0cHV0IGZy
YW1lcy4KLS8vIDMpIENvcHkgcjMgdG8gcjEgYW5kIHI0IHRvIHIyLgotLy8gNCkgQ29uc3VtZSBp
bnB1dCBmcmFtZXMgaW50byByNSAoemVyby1wYWQgaWYgd2UgcnVuIG91dCBvZiBpbnB1dCkuCi0v
LyA1KSBHb3RvICgyKSB1bnRpbCBhbGwgb2YgaW5wdXQgaXMgY29uc3VtZWQuCisvLyAxKSBBbGxv
Y2F0ZSBpbnB1dF9idWZmZXIgb2Ygc2l6ZTogbV9yZXF1ZXN0RnJhbWVzICsga2VybmVsU2l6ZTsg
dGhpcyBlbnN1cmVzCisvLyAgICB0aGVyZSdzIGVub3VnaCByb29tIHRvIHJlYWQgbV9yZXF1ZXN0
RnJhbWVzIGZyb20gdGhlIGNhbGxiYWNrIGludG8gcmVnaW9uCisvLyAgICByMCAod2hpY2ggd2ls
bCBtb3ZlIGJldHdlZW4gdGhlIGZpcnN0IGFuZCBzdWJzZXF1ZW50IHBhc3NlcykuCisvLworLy8g
MikgTGV0IHIxLCByMiBlYWNoIHJlcHJlc2VudCBoYWxmIHRoZSBrZXJuZWwgY2VudGVyZWQgYXJv
dW5kIHIwOgorLy8KKy8vICAgICAgICByMCA9IG1faW5wdXRCdWZmZXIgKyBrZXJuZWxTaXplIC8g
MgorLy8gICAgICAgIHIxID0gbV9pbnB1dEJ1ZmZlcgorLy8gICAgICAgIHIyID0gcjAKKy8vCisv
LyAgICByMCBpcyBhbHdheXMgbV9yZXF1ZXN0RnJhbWVzIGluIHNpemUuIHIxLCByMiBhcmUga2Vy
bmVsU2l6ZSAvIDIgaW4KKy8vICAgIHNpemUuIHIxIG11c3QgYmUgemVybyBpbml0aWFsaXplZCB0
byBhdm9pZCBjb252b2x1dGlvbiB3aXRoIGdhcmJhZ2UgKHNlZQorLy8gICAgc3RlcCAoNSkgZm9y
IHdoeSkuCisvLworLy8gMykgTGV0IHIzLCByNCBlYWNoIHJlcHJlc2VudCBoYWxmIHRoZSBrZXJu
ZWwgcmlnaHQgYWxpZ25lZCB3aXRoIHRoZSBlbmQgb2YKKy8vICAgIHIwIGFuZCBjaG9vc2UgbV9i
bG9ja1NpemUgYXMgdGhlIGRpc3RhbmNlIGluIGZyYW1lcyBiZXR3ZWVuIHI0IGFuZCByMjoKKy8v
CisvLyAgICAgICAgcjMgPSByMCArIG1fcmVxdWVzdEZyYW1lcyAtIGtlcm5lbFNpemUKKy8vICAg
ICAgICByNCA9IHIwICsgbV9yZXF1ZXN0RnJhbWVzIC0ga2VybmVsU2l6ZSAvIDIKKy8vICAgICAg
ICBtX2Jsb2NrU2l6ZSA9IHI0IC0gcjIgPSBtX3JlcXVlc3RGcmFtZXMgLSBrZXJuZWxTaXplIC8g
MgorLy8KKy8vIDQpIENvbnN1bWUgbV9yZXF1ZXN0RnJhbWVzIGZyYW1lcyBpbnRvIHIwLgorLy8K
Ky8vIDUpIFBvc2l0aW9uIGtlcm5lbCBjZW50ZXJlZCBhdCBzdGFydCBvZiByMiBhbmQgZ2VuZXJh
dGUgb3V0cHV0IGZyYW1lcyB1bnRpbAorLy8gICAgdGhlIGtlcm5lbCBpcyBjZW50ZXJlZCBhdCB0
aGUgc3RhcnQgb2YgcjQgb3Igd2UndmUgZmluaXNoZWQgZ2VuZXJhdGluZworLy8gICAgYWxsIHRo
ZSBvdXRwdXQgZnJhbWVzLgorLy8KKy8vIDYpIFdyYXAgbGVmdCBvdmVyIGRhdGEgZnJvbSB0aGUg
cjMgdG8gcjEgYW5kIHI0IHRvIHIyLgorLy8KKy8vIDcpIElmIHdlJ3JlIG9uIHRoZSBzZWNvbmQg
bG9hZCwgaW4gb3JkZXIgdG8gYXZvaWQgb3ZlcndyaXRpbmcgdGhlIGZyYW1lcyB3ZQorLy8gICAg
anVzdCB3cmFwcGVkIGZyb20gcjQgd2UgbmVlZCB0byBzbGlkZSByMCB0byB0aGUgcmlnaHQgYnkg
dGhlIHNpemUgb2YKKy8vICAgIHI0LCB3aGljaCBpcyBrZXJuZWxTaXplIC8gMjoKKy8vCisvLyAg
ICAgICAgcjAgPSByMCArIGtlcm5lbFNpemUgLyAyID0gbV9pbnB1dEJ1ZmZlciArIGtlcm5lbFNp
emUKKy8vCisvLyAgICByMywgcjQsIGFuZCBtX2Jsb2NrU2l6ZSB0aGVuIG5lZWQgdG8gYmUgcmVp
bml0aWFsaXplZCwgc28gZ290byAoMykuCisvLworLy8gOCkgRWxzZSwgaWYgd2UncmUgbm90IG9u
IHRoZSBzZWNvbmQgbG9hZCwgZ290byAoNCkuCiAvLwogLy8gbm90ZTogd2UncmUgZ2xvc3Npbmcg
b3ZlciBob3cgdGhlIHN1Yi1zYW1wbGUgaGFuZGxpbmcgd29ya3Mgd2l0aCBtX3ZpcnR1YWxTb3Vy
Y2VJbmRleCwgZXRjLgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNpbmNSZXNhbXBsZXI6OlNp
bmNSZXNhbXBsZXIoZG91YmxlIHNjYWxlRmFjdG9yLCB1bnNpZ25lZCBrZXJuZWxTaXplLCB1bnNp
Z25lZCBudW1iZXJPZktlcm5lbE9mZnNldHMpCitjb25zdGV4cHIgdW5zaWduZWQgZGVmYXVsdFJl
cXVlc3RGcmFtZXMgeyA1MTIgfTsKK2NvbnN0ZXhwciB1bnNpZ25lZCBrZXJuZWxTaXplIHsgMzIg
fTsKK2NvbnN0ZXhwciB1bnNpZ25lZCBudW1iZXJPZktlcm5lbE9mZnNldHMgeyAzMiB9OworCitT
aW5jUmVzYW1wbGVyOjpTaW5jUmVzYW1wbGVyKGRvdWJsZSBzY2FsZUZhY3RvciwgT3B0aW9uYWw8
dW5zaWduZWQ+IHJlcXVlc3RGcmFtZXMpCiAgICAgOiBtX3NjYWxlRmFjdG9yKHNjYWxlRmFjdG9y
KQotICAgICwgbV9rZXJuZWxTaXplKGtlcm5lbFNpemUpCi0gICAgLCBtX251bWJlck9mS2VybmVs
T2Zmc2V0cyhudW1iZXJPZktlcm5lbE9mZnNldHMpCi0gICAgLCBtX2tlcm5lbFN0b3JhZ2UobV9r
ZXJuZWxTaXplICogKG1fbnVtYmVyT2ZLZXJuZWxPZmZzZXRzICsgMSkpCi0gICAgLCBtX3ZpcnR1
YWxTb3VyY2VJbmRleCgwKQotICAgICwgbV9ibG9ja1NpemUoNTEyKQotICAgICwgbV9pbnB1dEJ1
ZmZlcihtX2Jsb2NrU2l6ZSArIG1fa2VybmVsU2l6ZSkgLy8gU2VlIGlucHV0IGJ1ZmZlciBsYXlv
dXQgYWJvdmUuCi0gICAgLCBtX3NvdXJjZSgwKQotICAgICwgbV9zb3VyY2VGcmFtZXNBdmFpbGFi
bGUoMCkKLSAgICAsIG1fc291cmNlUHJvdmlkZXIoMCkKLSAgICAsIG1faXNCdWZmZXJQcmltZWQo
ZmFsc2UpCisgICAgLCBtX2tlcm5lbFN0b3JhZ2Uoa2VybmVsU2l6ZSAqIChudW1iZXJPZktlcm5l
bE9mZnNldHMgKyAxKSkKKyAgICAsIG1fcmVxdWVzdEZyYW1lcyhyZXF1ZXN0RnJhbWVzLnZhbHVl
T3IoZGVmYXVsdFJlcXVlc3RGcmFtZXMpKQorICAgICwgbV9pbnB1dEJ1ZmZlcihtX3JlcXVlc3RG
cmFtZXMgKyBrZXJuZWxTaXplKSAvLyBTZWUgaW5wdXQgYnVmZmVyIGxheW91dCBhYm92ZS4KKyAg
ICAsIG1fcjEobV9pbnB1dEJ1ZmZlci5kYXRhKCkpCisgICAgLCBtX3IyKG1faW5wdXRCdWZmZXIu
ZGF0YSgpICsga2VybmVsU2l6ZSAvIDIpCiB7CisgICAgQVNTRVJUKG1fcmVxdWVzdEZyYW1lcyA+
IDApOworICAgIHVwZGF0ZVJlZ2lvbnMoZmFsc2UpOworICAgIEFTU0VSVChtX2Jsb2NrU2l6ZSA+
IGtlcm5lbFNpemUpOwogICAgIGluaXRpYWxpemVLZXJuZWwoKTsKIH0KIAordm9pZCBTaW5jUmVz
YW1wbGVyOjp1cGRhdGVSZWdpb25zKGJvb2wgaXNTZWNvbmRMb2FkKQoreworICAgIC8vIFNldHVw
IHZhcmlvdXMgcmVnaW9uIHBvaW50ZXJzIGluIHRoZSBidWZmZXIgKHNlZSBkaWFncmFtIGFib3Zl
KS4gSWYgd2UncmUKKyAgICAvLyBvbiB0aGUgc2Vjb25kIGxvYWQgd2UgbmVlZCB0byBzbGlkZSBt
X3IwIHRvIHRoZSByaWdodCBieSBrZXJuZWxTaXplIC8gMi4KKyAgICBtX3IwID0gbV9pbnB1dEJ1
ZmZlci5kYXRhKCkgKyAoaXNTZWNvbmRMb2FkID8ga2VybmVsU2l6ZSA6IGtlcm5lbFNpemUgLyAy
KTsKKyAgICBtX3IzID0gbV9yMCArIG1fcmVxdWVzdEZyYW1lcyAtIGtlcm5lbFNpemU7CisgICAg
bV9yNCA9IG1fcjAgKyBtX3JlcXVlc3RGcmFtZXMgLSBrZXJuZWxTaXplIC8gMjsKKyAgICBtX2Js
b2NrU2l6ZSA9IG1fcjQgLSBtX3IyOworCisgICAgLy8gbV9yMSBhdCB0aGUgYmVnaW5uaW5nIG9m
IHRoZSBidWZmZXIuCisgICAgQVNTRVJUKG1fcjEgPT0gbV9pbnB1dEJ1ZmZlci5kYXRhKCkpOwor
ICAgIC8vIG1fcjEgbGVmdCBvZiBtX3IyLCBtX3I0IGxlZnQgb2YgbV9yMyBhbmQgc2l6ZSBjb3Jy
ZWN0LgorICAgIEFTU0VSVCgobV9yMiAtIG1fcjEpID09IChtX3I0IC0gbV9yMykpOworICAgIC8v
IG1fcjIgbGVmdCBvZiByMy4KKyAgICBBU1NFUlQobV9yMiA8PSBtX3IzKTsKK30KKwogdm9pZCBT
aW5jUmVzYW1wbGVyOjppbml0aWFsaXplS2VybmVsKCkKIHsKICAgICAvLyBCbGFja21hbiB3aW5k
b3cgcGFyYW1ldGVycy4KQEAgLTk4LDE2ICsxNjAsMTYgQEAgdm9pZCBTaW5jUmVzYW1wbGVyOjpp
bml0aWFsaXplS2VybmVsKCkKICAgICAvLyBUaGUgc2luYyBmdW5jdGlvbiBpcyBhbiBpZGVhbGl6
ZWQgYnJpY2std2FsbCBmaWx0ZXIsIGJ1dCBzaW5jZSB3ZSdyZSB3aW5kb3dpbmcgaXQgdGhlCiAg
ICAgLy8gdHJhbnNpdGlvbiBmcm9tIHBhc3MgdG8gc3RvcCBkb2VzIG5vdCBoYXBwZW4gcmlnaHQg
YXdheS4gU28gd2Ugc2hvdWxkIGFkanVzdCB0aGUKICAgICAvLyBsb3dwYXNzIGZpbHRlciBjdXRv
ZmYgc2xpZ2h0bHkgZG93bndhcmQgdG8gYXZvaWQgc29tZSBhbGlhc2luZyBhdCB0aGUgdmVyeSBo
aWdoLWVuZC4KLSAgICAvLyBGSVhNRTogdGhpcyB2YWx1ZSBpcyBlbXBpcmljYWwgYW5kIHRvIGJl
IG1vcmUgZXhhY3Qgc2hvdWxkIHZhcnkgZGVwZW5kaW5nIG9uIG1fa2VybmVsU2l6ZS4KKyAgICAv
LyBGSVhNRTogdGhpcyB2YWx1ZSBpcyBlbXBpcmljYWwgYW5kIHRvIGJlIG1vcmUgZXhhY3Qgc2hv
dWxkIHZhcnkgZGVwZW5kaW5nIG9uIGtlcm5lbFNpemUuCiAgICAgc2luY1NjYWxlRmFjdG9yICo9
IDAuOTsKIAotICAgIGludCBuID0gbV9rZXJuZWxTaXplOworICAgIGludCBuID0ga2VybmVsU2l6
ZTsKICAgICBpbnQgaGFsZlNpemUgPSBuIC8gMjsKIAogICAgIC8vIEdlbmVyYXRlcyBhIHNldCBv
ZiB3aW5kb3dlZCBzaW5jKCkga2VybmVscy4KICAgICAvLyBXZSBnZW5lcmF0ZSBhIHJhbmdlIG9m
IHN1Yi1zYW1wbGUgb2Zmc2V0cyBmcm9tIDAuMCB0byAxLjAuCi0gICAgZm9yICh1bnNpZ25lZCBv
ZmZzZXRJbmRleCA9IDA7IG9mZnNldEluZGV4IDw9IG1fbnVtYmVyT2ZLZXJuZWxPZmZzZXRzOyAr
K29mZnNldEluZGV4KSB7Ci0gICAgICAgIGRvdWJsZSBzdWJzYW1wbGVPZmZzZXQgPSBzdGF0aWNf
Y2FzdDxkb3VibGU+KG9mZnNldEluZGV4KSAvIG1fbnVtYmVyT2ZLZXJuZWxPZmZzZXRzOworICAg
IGZvciAodW5zaWduZWQgb2Zmc2V0SW5kZXggPSAwOyBvZmZzZXRJbmRleCA8PSBudW1iZXJPZktl
cm5lbE9mZnNldHM7ICsrb2Zmc2V0SW5kZXgpIHsKKyAgICAgICAgZG91YmxlIHN1YnNhbXBsZU9m
ZnNldCA9IHN0YXRpY19jYXN0PGRvdWJsZT4ob2Zmc2V0SW5kZXgpIC8gbnVtYmVyT2ZLZXJuZWxP
ZmZzZXRzOwogCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKSB7CiAgICAgICAg
ICAgICAvLyBDb21wdXRlIHRoZSBzaW5jKCkgd2l0aCBvZmZzZXQuCkBAIC0xMjAsNyArMTgyLDcg
QEAgdm9pZCBTaW5jUmVzYW1wbGVyOjppbml0aWFsaXplS2VybmVsKCkKICAgICAgICAgICAgIGRv
dWJsZSB3aW5kb3cgPSBhMCAtIGExICogY29zKDIuMCAqIHBpRG91YmxlICogeCkgKyBhMiAqIGNv
cyg0LjAgKiBwaURvdWJsZSAqIHgpOwogCiAgICAgICAgICAgICAvLyBXaW5kb3cgdGhlIHNpbmMo
KSBmdW5jdGlvbiBhbmQgc3RvcmUgYXQgdGhlIGNvcnJlY3Qgb2Zmc2V0LgotICAgICAgICAgICAg
bV9rZXJuZWxTdG9yYWdlW2kgKyBvZmZzZXRJbmRleCAqIG1fa2VybmVsU2l6ZV0gPSBzaW5jICog
d2luZG93OworICAgICAgICAgICAgbV9rZXJuZWxTdG9yYWdlW2kgKyBvZmZzZXRJbmRleCAqIGtl
cm5lbFNpemVdID0gc2luYyAqIHdpbmRvdzsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTE5MCw3
ICsyNTIsNyBAQCB2b2lkIFNpbmNSZXNhbXBsZXI6OnByb2Nlc3MoY29uc3QgZmxvYXQqIHNvdXJj
ZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBudQogICAgIHVuc2lnbmVkIHJlbWFpbmlu
ZyA9IG51bWJlck9mRGVzdGluYXRpb25GcmFtZXM7CiAgICAgCiAgICAgd2hpbGUgKHJlbWFpbmlu
ZykgewotICAgICAgICB1bnNpZ25lZCBmcmFtZXNUaGlzVGltZSA9IHN0ZDo6bWluKHJlbWFpbmlu
ZywgbV9ibG9ja1NpemUpOworICAgICAgICB1bnNpZ25lZCBmcmFtZXNUaGlzVGltZSA9IHN0ZDo6
bWluKHJlbWFpbmluZywgbV9yZXF1ZXN0RnJhbWVzKTsKICAgICAgICAgcHJvY2Vzcygmc291cmNl
UHJvdmlkZXIsIGRlc3RpbmF0aW9uLCBmcmFtZXNUaGlzVGltZSk7CiAgICAgICAgIAogICAgICAg
ICBkZXN0aW5hdGlvbiArPSBmcmFtZXNUaGlzVGltZTsKQEAgLTIwMCwyNyArMjYyLDE4IEBAIHZv
aWQgU2luY1Jlc2FtcGxlcjo6cHJvY2Vzcyhjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVz
dGluYXRpb24sIHVuc2lnbmVkIG51CiAKIHZvaWQgU2luY1Jlc2FtcGxlcjo6cHJvY2VzcyhBdWRp
b1NvdXJjZVByb3ZpZGVyKiBzb3VyY2VQcm92aWRlciwgZmxvYXQqIGRlc3RpbmF0aW9uLCBzaXpl
X3QgZnJhbWVzVG9Qcm9jZXNzKQogewotICAgIGJvb2wgaXNHb29kID0gc291cmNlUHJvdmlkZXIg
JiYgbV9ibG9ja1NpemUgPiBtX2tlcm5lbFNpemUgJiYgbV9pbnB1dEJ1ZmZlci5zaXplKCkgPj0g
bV9ibG9ja1NpemUgKyBtX2tlcm5lbFNpemUgJiYgIShtX2tlcm5lbFNpemUgJSAyKTsKLSAgICBB
U1NFUlQoaXNHb29kKTsKLSAgICBpZiAoIWlzR29vZCkKKyAgICBBU1NFUlQoc291cmNlUHJvdmlk
ZXIpOworICAgIGlmICghc291cmNlUHJvdmlkZXIpCiAgICAgICAgIHJldHVybjsKICAgICAKICAg
ICBtX3NvdXJjZVByb3ZpZGVyID0gc291cmNlUHJvdmlkZXI7CiAKICAgICB1bnNpZ25lZCBudW1i
ZXJPZkRlc3RpbmF0aW9uRnJhbWVzID0gZnJhbWVzVG9Qcm9jZXNzOwotICAgIAotICAgIC8vIFNl
dHVwIHZhcmlvdXMgcmVnaW9uIHBvaW50ZXJzIGluIHRoZSBidWZmZXIgKHNlZSBkaWFncmFtIGFi
b3ZlKS4KLSAgICBmbG9hdCogcjAgPSBtX2lucHV0QnVmZmVyLmRhdGEoKSArIG1fa2VybmVsU2l6
ZSAvIDI7Ci0gICAgZmxvYXQqIHIxID0gbV9pbnB1dEJ1ZmZlci5kYXRhKCk7Ci0gICAgZmxvYXQq
IHIyID0gcjA7Ci0gICAgZmxvYXQqIHIzID0gcjAgKyBtX2Jsb2NrU2l6ZSAtIG1fa2VybmVsU2l6
ZSAvIDI7Ci0gICAgZmxvYXQqIHI0ID0gcjAgKyBtX2Jsb2NrU2l6ZTsKLSAgICBmbG9hdCogcjUg
PSByMCArIG1fa2VybmVsU2l6ZSAvIDI7CiAKICAgICAvLyBTdGVwICgxKQogICAgIC8vIFByaW1l
IHRoZSBpbnB1dCBidWZmZXIgYXQgdGhlIHN0YXJ0IG9mIHRoZSBpbnB1dCBzdHJlYW0uCiAgICAg
aWYgKCFtX2lzQnVmZmVyUHJpbWVkKSB7Ci0gICAgICAgIGNvbnN1bWVTb3VyY2UocjAsIG1fYmxv
Y2tTaXplICsgbV9rZXJuZWxTaXplIC8gMik7CisgICAgICAgIGNvbnN1bWVTb3VyY2UobV9yMCwg
bV9yZXF1ZXN0RnJhbWVzKTsKICAgICAgICAgbV9pc0J1ZmZlclByaW1lZCA9IHRydWU7CiAgICAg
fQogICAgIApAQCAtMjMyLDE0ICsyODUsMTQgQEAgdm9pZCBTaW5jUmVzYW1wbGVyOjpwcm9jZXNz
KEF1ZGlvU291cmNlUHJvdmlkZXIqIHNvdXJjZVByb3ZpZGVyLCBmbG9hdCogZGVzdGluYXQKICAg
ICAgICAgICAgIGludCBzb3VyY2VJbmRleEkgPSBzdGF0aWNfY2FzdDxpbnQ+KG1fdmlydHVhbFNv
dXJjZUluZGV4KTsKICAgICAgICAgICAgIGRvdWJsZSBzdWJzYW1wbGVSZW1haW5kZXIgPSBtX3Zp
cnR1YWxTb3VyY2VJbmRleCAtIHNvdXJjZUluZGV4STsKIAotICAgICAgICAgICAgZG91YmxlIHZp
cnR1YWxPZmZzZXRJbmRleCA9IHN1YnNhbXBsZVJlbWFpbmRlciAqIG1fbnVtYmVyT2ZLZXJuZWxP
ZmZzZXRzOworICAgICAgICAgICAgZG91YmxlIHZpcnR1YWxPZmZzZXRJbmRleCA9IHN1YnNhbXBs
ZVJlbWFpbmRlciAqIG51bWJlck9mS2VybmVsT2Zmc2V0czsKICAgICAgICAgICAgIGludCBvZmZz
ZXRJbmRleCA9IHN0YXRpY19jYXN0PGludD4odmlydHVhbE9mZnNldEluZGV4KTsKICAgICAgICAg
ICAgIAotICAgICAgICAgICAgZmxvYXQqIGsxID0gbV9rZXJuZWxTdG9yYWdlLmRhdGEoKSArIG9m
ZnNldEluZGV4ICogbV9rZXJuZWxTaXplOwotICAgICAgICAgICAgZmxvYXQqIGsyID0gazEgKyBt
X2tlcm5lbFNpemU7CisgICAgICAgICAgICBmbG9hdCogazEgPSBtX2tlcm5lbFN0b3JhZ2UuZGF0
YSgpICsgb2Zmc2V0SW5kZXggKiBrZXJuZWxTaXplOworICAgICAgICAgICAgZmxvYXQqIGsyID0g
azEgKyBrZXJuZWxTaXplOwogCiAgICAgICAgICAgICAvLyBJbml0aWFsaXplIGlucHV0IHBvaW50
ZXIgYmFzZWQgb24gcXVhbnRpemVkIG1fdmlydHVhbFNvdXJjZUluZGV4LgotICAgICAgICAgICAg
ZmxvYXQqIGlucHV0UCA9IHIxICsgc291cmNlSW5kZXhJOworICAgICAgICAgICAgZmxvYXQqIGlu
cHV0UCA9IG1fcjEgKyBzb3VyY2VJbmRleEk7CiAKICAgICAgICAgICAgIC8vIFdlJ2xsIGNvbXB1
dGUgImNvbnZvbHV0aW9ucyIgZm9yIHRoZSB0d28ga2VybmVscyB3aGljaCBzdHJhZGRsZSBtX3Zp
cnR1YWxTb3VyY2VJbmRleAogICAgICAgICAgICAgZmxvYXQgc3VtMSA9IDA7CkBAIC0yNDksNyAr
MzAyLDcgQEAgdm9pZCBTaW5jUmVzYW1wbGVyOjpwcm9jZXNzKEF1ZGlvU291cmNlUHJvdmlkZXIq
IHNvdXJjZVByb3ZpZGVyLCBmbG9hdCogZGVzdGluYXQKICAgICAgICAgICAgIGRvdWJsZSBrZXJu
ZWxJbnRlcnBvbGF0aW9uRmFjdG9yID0gdmlydHVhbE9mZnNldEluZGV4IC0gb2Zmc2V0SW5kZXg7
CiAKICAgICAgICAgICAgIC8vIEdlbmVyYXRlIGEgc2luZ2xlIG91dHB1dCBzYW1wbGUuIAotICAg
ICAgICAgICAgaW50IG4gPSBtX2tlcm5lbFNpemU7CisgICAgICAgICAgICBpbnQgbiA9IGtlcm5l
bFNpemU7CiAKICNkZWZpbmUgQ09OVk9MVkVfT05FX1NBTVBMRSAgICAgIFwKICAgICAgICAgICAg
IGlucHV0ID0gKmlucHV0UCsrOyAgIFwKQEAgLTQ1NSwxNiArNTA4LDIwIEBAIHZvaWQgU2luY1Jl
c2FtcGxlcjo6cHJvY2VzcyhBdWRpb1NvdXJjZVByb3ZpZGVyKiBzb3VyY2VQcm92aWRlciwgZmxv
YXQqIGRlc3RpbmF0CiAgICAgICAgIH0KIAogICAgICAgICAvLyBXcmFwIGJhY2sgYXJvdW5kIHRv
IHRoZSBzdGFydC4KKyAgICAgICAgQVNTRVJUKG1fdmlydHVhbFNvdXJjZUluZGV4ID49IG1fYmxv
Y2tTaXplKTsKICAgICAgICAgbV92aXJ0dWFsU291cmNlSW5kZXggLT0gbV9ibG9ja1NpemU7CiAK
LSAgICAgICAgLy8gU3RlcCAoMykgQ29weSByMyB0byByMSBhbmQgcjQgdG8gcjIuCisgICAgICAg
IC8vIFN0ZXAgKDMpIENvcHkgcjMgdG8gcjEuCiAgICAgICAgIC8vIFRoaXMgd3JhcHMgdGhlIGxh
c3QgaW5wdXQgZnJhbWVzIGJhY2sgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuCi0gICAgICAg
IG1lbWNweShyMSwgcjMsIHNpemVvZihmbG9hdCkgKiAobV9rZXJuZWxTaXplIC8gMikpOwotICAg
ICAgICBtZW1jcHkocjIsIHI0LCBzaXplb2YoZmxvYXQpICogKG1fa2VybmVsU2l6ZSAvIDIpKTsK
KyAgICAgICAgbWVtY3B5KG1fcjEsIG1fcjMsIHNpemVvZihmbG9hdCkgKiBrZXJuZWxTaXplKTsK
KworICAgICAgICAvLyBTdGVwICg0KSAtLSBSZWluaXRpYWxpemUgcmVnaW9ucyBpZiBuZWNlc3Nh
cnkuCisgICAgICAgIGlmIChtX3IwID09IG1fcjIpCisgICAgICAgICAgICB1cGRhdGVSZWdpb25z
KHRydWUpOwogCi0gICAgICAgIC8vIFN0ZXAgKDQpCisgICAgICAgIC8vIFN0ZXAgKDUpCiAgICAg
ICAgIC8vIFJlZnJlc2ggdGhlIGJ1ZmZlciB3aXRoIG1vcmUgaW5wdXQuCi0gICAgICAgIGNvbnN1
bWVTb3VyY2UocjUsIG1fYmxvY2tTaXplKTsKKyAgICAgICAgY29uc3VtZVNvdXJjZShtX3IwLCBt
X3JlcXVlc3RGcmFtZXMpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vU2luY1Jlc2FtcGxlci5oCmluZGV4IGIxNmViNTEzMjU4OGRiNWYxYTkxODU1NjBjZGU5
N2Q4MWRjNGRhMjUuLjkzYmYwNGQ5MGYwMmIyN2M3OTU5ZTFiOTNiMzY3NDJkZGZkOTdjNjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmgKQEAgLTM5
LDExICszOSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNpbmNSZXNhbXBsZXIg
ZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOiAgIAorcHVibGlj
OgogICAgIC8vIHNjYWxlRmFjdG9yID09IHNvdXJjZVNhbXBsZVJhdGUgLyBkZXN0aW5hdGlvblNh
bXBsZVJhdGUKLSAgICAvLyBrZXJuZWxTaXplIGNhbiBiZSBhZGp1c3RlZCBmb3IgcXVhbGl0eSAo
aGlnaGVyIGlzIGJldHRlcikKLSAgICAvLyBudW1iZXJPZktlcm5lbE9mZnNldHMgaXMgdXNlZCBm
b3IgaW50ZXJwb2xhdGlvbiBhbmQgaXMgdGhlIG51bWJlciBvZiBzdWItc2FtcGxlIGtlcm5lbCBz
aGlmdHMuCi0gICAgU2luY1Jlc2FtcGxlcihkb3VibGUgc2NhbGVGYWN0b3IsIHVuc2lnbmVkIGtl
cm5lbFNpemUgPSAzMiwgdW5zaWduZWQgbnVtYmVyT2ZLZXJuZWxPZmZzZXRzID0gMzIpOworICAg
IC8vIHJlcXVlc3RGcmFtZXMgY29udHJvbHMgdGhlIHNpemUgaW4gZnJhbWVzIG9mIHRoZSBidWZm
ZXIgcmVxdWVzdGVkIGJ5IGVhY2ggcHJvdmlkZUlucHV0KCkgY2FsbC4KKyAgICBTaW5jUmVzYW1w
bGVyKGRvdWJsZSBzY2FsZUZhY3RvciwgT3B0aW9uYWw8dW5zaWduZWQ+IHJlcXVlc3RGcmFtZXMg
PSBXVEY6Om51bGxvcHQpOwogICAgIAogICAgIC8vIFByb2Nlc3NlcyBudW1iZXJPZlNvdXJjZUZy
YW1lcyBmcm9tIHNvdXJjZSB0byBwcm9kdWNlIG51bWJlck9mU291cmNlRnJhbWVzIC8gc2NhbGVG
YWN0b3IgZnJhbWVzIGluIGRlc3RpbmF0aW9uLgogICAgIHZvaWQgcHJvY2Vzcyhjb25zdCBmbG9h
dCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIG51bWJlck9mU291cmNlRnJh
bWVzKTsKQEAgLTU0LDEwICs1Myw5IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICB2b2lkIGlu
aXRpYWxpemVLZXJuZWwoKTsKICAgICB2b2lkIGNvbnN1bWVTb3VyY2UoZmxvYXQqIGJ1ZmZlciwg
dW5zaWduZWQgbnVtYmVyT2ZTb3VyY2VGcmFtZXMpOworICAgIHZvaWQgdXBkYXRlUmVnaW9ucyhi
b29sIGlzU2Vjb25kTG9hZCk7CiAgICAgCiAgICAgZG91YmxlIG1fc2NhbGVGYWN0b3I7Ci0gICAg
dW5zaWduZWQgbV9rZXJuZWxTaXplOwotICAgIHVuc2lnbmVkIG1fbnVtYmVyT2ZLZXJuZWxPZmZz
ZXRzOwogCiAgICAgLy8gbV9rZXJuZWxTdG9yYWdlIGhhcyBtX251bWJlck9mS2VybmVsT2Zmc2V0
cyBrZXJuZWxzIGJhY2stdG8tYmFjaywgZWFjaCBvZiBzaXplIG1fa2VybmVsU2l6ZS4KICAgICAv
LyBUaGUga2VybmVsIG9mZnNldHMgYXJlIHN1Yi1zYW1wbGUgc2hpZnRzIG9mIGEgd2luZG93ZWQg
c2luYygpIHNoaWZ0ZWQgZnJvbSAwLjAgdG8gMS4wIHNhbXBsZS4KQEAgLTY1LDIyICs2MywzMyBA
QCBwcm90ZWN0ZWQ6CiAgICAgCiAgICAgLy8gbV92aXJ0dWFsU291cmNlSW5kZXggaXMgYW4gaW5k
ZXggb24gdGhlIHNvdXJjZSBpbnB1dCBidWZmZXIgd2l0aCBzdWItc2FtcGxlIHByZWNpc2lvbi4K
ICAgICAvLyBJdCBtdXN0IGJlIGRvdWJsZSBwcmVjaXNpb24gdG8gYXZvaWQgZHJpZnQuCi0gICAg
ZG91YmxlIG1fdmlydHVhbFNvdXJjZUluZGV4OworICAgIGRvdWJsZSBtX3ZpcnR1YWxTb3VyY2VJ
bmRleCB7IDAgfTsKICAgICAKICAgICAvLyBUaGlzIGlzIHRoZSBudW1iZXIgb2YgZGVzdGluYXRp
b24gZnJhbWVzIHdlIGdlbmVyYXRlIHBlciBwcm9jZXNzaW5nIHBhc3Mgb24gdGhlIGJ1ZmZlci4K
LSAgICB1bnNpZ25lZCBtX2Jsb2NrU2l6ZTsKKyAgICB1bnNpZ25lZCBtX3JlcXVlc3RGcmFtZXM7
CisKKyAgICAvLyBUaGUgbnVtYmVyIG9mIHNvdXJjZSBmcmFtZXMgcHJvY2Vzc2VkIHBlciBwYXNz
LgorICAgIHVuc2lnbmVkIG1fYmxvY2tTaXplIHsgMCB9OwogCiAgICAgLy8gU291cmNlIGlzIGNv
cGllZCBpbnRvIHRoaXMgYnVmZmVyIGZvciBlYWNoIHByb2Nlc3NpbmcgcGFzcy4KICAgICBBdWRp
b0Zsb2F0QXJyYXkgbV9pbnB1dEJ1ZmZlcjsKIAotICAgIGNvbnN0IGZsb2F0KiBtX3NvdXJjZTsK
LSAgICB1bnNpZ25lZCBtX3NvdXJjZUZyYW1lc0F2YWlsYWJsZTsKKyAgICAvLyBQb2ludGVycyB0
byB0aGUgdmFyaW91cyByZWdpb25zIGluc2lkZSB8bV9pbnB1dEJ1ZmZlcnwuIFNlZSB0aGUgZGlh
Z3JhbSBhdAorICAgIC8vIHRoZSB0b3Agb2YgdGhlIC5jcHAgZmlsZSBmb3IgbW9yZSBpbmZvcm1h
dGlvbi4KKyAgICBmbG9hdCogbV9yMCB7IG51bGxwdHIgfTsKKyAgICBmbG9hdCogY29uc3QgbV9y
MSB7IG51bGxwdHIgfTsKKyAgICBmbG9hdCogY29uc3QgbV9yMiB7IG51bGxwdHIgfTsKKyAgICBm
bG9hdCogbV9yMyB7IG51bGxwdHIgfTsKKyAgICBmbG9hdCogbV9yNCB7IG51bGxwdHIgfTsKKwor
ICAgIGNvbnN0IGZsb2F0KiBtX3NvdXJjZSB7IG51bGxwdHIgfTsKKyAgICB1bnNpZ25lZCBtX3Nv
dXJjZUZyYW1lc0F2YWlsYWJsZSB7IDAgfTsKICAgICAKICAgICAvLyBtX3NvdXJjZVByb3ZpZGVy
IGlzIHVzZWQgdG8gcHJvdmlkZSB0aGUgYXVkaW8gaW5wdXQgc3RyZWFtIHRvIHRoZSByZXNhbXBs
ZXIuCi0gICAgQXVkaW9Tb3VyY2VQcm92aWRlciogbV9zb3VyY2VQcm92aWRlcjsgICAgCisgICAg
QXVkaW9Tb3VyY2VQcm92aWRlciogbV9zb3VyY2VQcm92aWRlciB7IG51bGxwdHIgfTsKIAogICAg
IC8vIFRoZSBidWZmZXIgaXMgcHJpbWVkIG9uY2UgYXQgdGhlIHZlcnkgYmVnaW5uaW5nIG9mIHBy
b2Nlc3NpbmcuCi0gICAgYm9vbCBtX2lzQnVmZmVyUHJpbWVkOworICAgIGJvb2wgbV9pc0J1ZmZl
clByaW1lZCB7IGZhbHNlIH07CiAKICAgICBSZWZQdHI8QXVkaW9CdXM+IG1faW50ZXJuYWxCdXM7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVk
aW9EZXN0aW5hdGlvbkNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nv
Y29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKaW5kZXggYWU2MzUwZmMxMWE0Njk0NzhlODBj
MGJmYzMzN2MyMDhiODM5M2U0ZS4uNzc1ZDYyZGU4YWRlNzk5ODM3YjQwNWM5YTQxOTY4MjU0ZWY1
ZDIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVk
aW9EZXN0aW5hdGlvbkNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCkBAIC0yOSwxMyArMjksMTYgQEAKICNp
ZiBFTkFCTEUoV0VCX0FVRElPKQogCiAjaW5jbHVkZSAiQXVkaW9CdXMuaCIKLSNpbmNsdWRlICJB
dWRpb0lPQ2FsbGJhY2suaCIKICNpbmNsdWRlICJBdWRpb1Nlc3Npb24uaCIKICNpbmNsdWRlICJM
b2dnaW5nLmgiCisjaW5jbHVkZSAiTXVsdGlDaGFubmVsUmVzYW1wbGVyLmgiCisjaW5jbHVkZSAi
UHVzaFB1bGxGSUZPLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY29uc3QgaW50IGtSZW5k
ZXJCdWZmZXJTaXplID0gMTI4OworY29uc3RleHByIHNpemVfdCBrUmVuZGVyQnVmZmVyU2l6ZSA9
IDEyODsKKworY29uc3RleHByIHNpemVfdCBmaWZvU2l6ZSA9IDk2ICoga1JlbmRlckJ1ZmZlclNp
emU7CiAKIENyZWF0ZUF1ZGlvRGVzdGluYXRpb25Db2NvYU92ZXJyaWRlIEF1ZGlvRGVzdGluYXRp
b25Db2NvYTo6Y3JlYXRlT3ZlcnJpZGUgPSBudWxscHRyOwogCkBAIC02OCwxNCArNzEsMjQgQEAg
dW5zaWduZWQgbG9uZyBBdWRpb0Rlc3RpbmF0aW9uOjptYXhDaGFubmVsQ291bnQoKQogICAgIHJl
dHVybiBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5tYXhpbXVtTnVtYmVyT2ZPdXRwdXRD
aGFubmVscygpOwogfQogCisvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBiZSBoYXJkY29kaW5nIHRo
ZSBudW1iZXIgb2YgaW5wdXQgY2hhbm5lbHMuCitjb25zdGV4cHIgdW5zaWduZWQgbGVnYWN5TnVt
YmVyT2ZPdXRwdXRDaGFubmVscyB7IDIgfTsKKwogQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpBdWRp
b0Rlc3RpbmF0aW9uQ29jb2EoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywgZmxvYXQgc2FtcGxl
UmF0ZSkKICAgICA6IG1fb3V0cHV0VW5pdCgwKQogICAgICwgbV9jYWxsYmFjayhjYWxsYmFjaykK
LSAgICAsIG1fcmVuZGVyQnVzKEF1ZGlvQnVzOjpjcmVhdGUoMiwga1JlbmRlckJ1ZmZlclNpemUs
IGZhbHNlKS5yZWxlYXNlTm9uTnVsbCgpKQotICAgICwgbV9zcGFyZUJ1cyhBdWRpb0J1czo6Y3Jl
YXRlKDIsIGtSZW5kZXJCdWZmZXJTaXplLCB0cnVlKS5yZWxlYXNlTm9uTnVsbCgpKQotICAgICwg
bV9zYW1wbGVSYXRlKHNhbXBsZVJhdGUpCisgICAgLCBtX291dHB1dEJ1cyhBdWRpb0J1czo6Y3Jl
YXRlKGxlZ2FjeU51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGtSZW5kZXJCdWZmZXJTaXplLCBmYWxz
ZSkucmVsZWFzZU5vbk51bGwoKSkKKyAgICAsIG1fcmVuZGVyQnVzKEF1ZGlvQnVzOjpjcmVhdGUo
bGVnYWN5TnVtYmVyT2ZPdXRwdXRDaGFubmVscywga1JlbmRlckJ1ZmZlclNpemUpLnJlbGVhc2VO
b25OdWxsKCkpCisgICAgLCBtX2ZpZm8obWFrZVVuaXF1ZVJlZjxQdXNoUHVsbEZJRk8+KGxlZ2Fj
eU51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZpZm9TaXplKSkKKyAgICAsIG1fY29udGV4dFNhbXBs
ZVJhdGUoc2FtcGxlUmF0ZSkKIHsKICAgICBjb25maWd1cmUoKTsKKworICAgIGF1dG8gaGFyZHdh
cmVTYW1wbGVSYXRlID0gdGhpcy0+aGFyZHdhcmVTYW1wbGVSYXRlKCk7CisgICAgaWYgKHNhbXBs
ZVJhdGUgIT0gaGFyZHdhcmVTYW1wbGVSYXRlKSB7CisgICAgICAgIGRvdWJsZSBzY2FsZUZhY3Rv
ciA9IHN0YXRpY19jYXN0PGRvdWJsZT4oc2FtcGxlUmF0ZSkgLyBoYXJkd2FyZVNhbXBsZVJhdGU7
CisgICAgICAgIG1fcmVzYW1wbGVyID0gbWFrZVVuaXF1ZTxNdWx0aUNoYW5uZWxSZXNhbXBsZXI+
KHNjYWxlRmFjdG9yLCBsZWdhY3lOdW1iZXJPZk91dHB1dENoYW5uZWxzLCBrUmVuZGVyQnVmZmVy
U2l6ZSk7CisgICAgfQogfQogCiBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6On5BdWRpb0Rlc3RpbmF0
aW9uQ29jb2EoKQpAQCAtMTE2LDExICsxMjksMTEgQEAgdm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ29j
b2E6OnNldElzUGxheWluZyhib29sIGlzUGxheWluZykKICAgICBtX2NhbGxiYWNrLmlzUGxheWlu
Z0RpZENoYW5nZSgpOwogfQogCi12b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6c2V0QXVkaW9T
dHJlYW1CYXNpY0Rlc2NyaXB0aW9uKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYgc3RyZWFt
Rm9ybWF0LCBmbG9hdCBzYW1wbGVSYXRlKQordm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnNl
dEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24m
IHN0cmVhbUZvcm1hdCkKIHsKICAgICBjb25zdCBpbnQgYnl0ZXNQZXJGbG9hdCA9IHNpemVvZihG
bG9hdDMyKTsKICAgICBjb25zdCBpbnQgYml0c1BlckJ5dGUgPSA4OwotICAgIHN0cmVhbUZvcm1h
dC5tU2FtcGxlUmF0ZSA9IHNhbXBsZVJhdGU7CisgICAgc3RyZWFtRm9ybWF0Lm1TYW1wbGVSYXRl
ID0gaGFyZHdhcmVTYW1wbGVSYXRlKCk7CiAgICAgc3RyZWFtRm9ybWF0Lm1Gb3JtYXRJRCA9IGtB
dWRpb0Zvcm1hdExpbmVhclBDTTsKICAgICBzdHJlYW1Gb3JtYXQubUZvcm1hdEZsYWdzID0ga0F1
ZGlvRm9ybWF0RmxhZ3NOYXRpdmVGbG9hdFBhY2tlZCB8IGtBdWRpb0Zvcm1hdEZsYWdJc05vbklu
dGVybGVhdmVkOwogICAgIHN0cmVhbUZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQgPSBieXRlc1BlckZs
b2F0OwpAQCAtMTQzLDQ0ICsxNTYsMzEgQEAgc3RhdGljIHZvaWQgYXNzaWduQXVkaW9CdWZmZXJz
VG9CdXMoQXVkaW9CdWZmZXIqIGJ1ZmZlcnMsIEF1ZGlvQnVzJiBidXMsIFVJbnQzMgogLy8gUHVs
bHMgb24gb3VyIHByb3ZpZGVyIHRvIGdldCByZW5kZXJlZCBhdWRpbyBzdHJlYW0uCiBPU1N0YXR1
cyBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnJlbmRlcihjb25zdCBBdWRpb1RpbWVTdGFtcCogdGlt
ZXN0YW1wLCBVSW50MzIgbnVtYmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCogaW9EYXRhKQog
ewotICAgIEF1ZGlvSU9Qb3NpdGlvbiBvdXRwdXRUaW1lc3RhbXA7CisgICAgaWYgKG1fZmlmby0+
bGVuZ3RoKCkgPCBudW1iZXJPZkZyYW1lcykKKyAgICAgICAgcmV0dXJuIG5vRXJyOworCiAgICAg
aWYgKHRpbWVzdGFtcCkgewotICAgICAgICBvdXRwdXRUaW1lc3RhbXAgPSB7Ci0gICAgICAgICAg
ICBTZWNvbmRzIHsgdGltZXN0YW1wLT5tU2FtcGxlVGltZSAvIG1fc2FtcGxlUmF0ZSB9LAorICAg
ICAgICBtX291dHB1dFRpbWVzdGFtcCA9IHsKKyAgICAgICAgICAgIFNlY29uZHMgeyB0aW1lc3Rh
bXAtPm1TYW1wbGVUaW1lIC8gc2FtcGxlUmF0ZSgpIH0sCiAgICAgICAgICAgICBNb25vdG9uaWNU
aW1lOjpmcm9tTWFjaEFic29sdXRlVGltZSh0aW1lc3RhbXAtPm1Ib3N0VGltZSkKICAgICAgICAg
fTsKLSAgICB9CisgICAgfSBlbHNlCisgICAgICAgIG1fb3V0cHV0VGltZXN0YW1wID0gQXVkaW9J
T1Bvc2l0aW9uIHsgfTsKKwogICAgIGF1dG8qIGJ1ZmZlcnMgPSBpb0RhdGEtPm1CdWZmZXJzOwog
ICAgIFVJbnQzMiBudW1iZXJPZkJ1ZmZlcnMgPSBpb0RhdGEtPm1OdW1iZXJCdWZmZXJzOwotICAg
IFVJbnQzMiBmcmFtZXNSZW1haW5pbmcgPSBudW1iZXJPZkZyYW1lczsKLSAgICBVSW50MzIgZnJh
bWVPZmZzZXQgPSAwOwotICAgIHdoaWxlIChmcmFtZXNSZW1haW5pbmcgPiAwKSB7Ci0gICAgICAg
IGlmIChtX3N0YXJ0U3BhcmVGcmFtZSA8IG1fZW5kU3BhcmVGcmFtZSkgewotICAgICAgICAgICAg
QVNTRVJUKG1fc3RhcnRTcGFyZUZyYW1lIDwgbV9lbmRTcGFyZUZyYW1lKTsKLSAgICAgICAgICAg
IFVJbnQzMiBmcmFtZXNUaGlzVGltZSA9IHN0ZDo6bWluPFVJbnQzMj4obV9lbmRTcGFyZUZyYW1l
IC0gbV9zdGFydFNwYXJlRnJhbWUsIG51bWJlck9mRnJhbWVzKTsKLSAgICAgICAgICAgIGFzc2ln
bkF1ZGlvQnVmZmVyc1RvQnVzKGJ1ZmZlcnMsIG1fcmVuZGVyQnVzLmdldCgpLCBudW1iZXJPZkJ1
ZmZlcnMsIG51bWJlck9mRnJhbWVzLCBmcmFtZU9mZnNldCwgZnJhbWVzVGhpc1RpbWUpOwotICAg
ICAgICAgICAgbV9yZW5kZXJCdXMtPmNvcHlGcm9tUmFuZ2UobV9zcGFyZUJ1cy5nZXQoKSwgbV9z
dGFydFNwYXJlRnJhbWUsIG1fZW5kU3BhcmVGcmFtZSk7Ci0gICAgICAgICAgICBwcm9jZXNzQnVz
QWZ0ZXJSZW5kZXIobV9yZW5kZXJCdXMuZ2V0KCksIGZyYW1lc1RoaXNUaW1lKTsKLSAgICAgICAg
ICAgIGZyYW1lT2Zmc2V0ICs9IGZyYW1lc1RoaXNUaW1lOwotICAgICAgICAgICAgZnJhbWVzUmVt
YWluaW5nIC09IGZyYW1lc1RoaXNUaW1lOwotICAgICAgICAgICAgbV9zdGFydFNwYXJlRnJhbWUg
Kz0gZnJhbWVzVGhpc1RpbWU7Ci0gICAgICAgIH0KLQotICAgICAgICBVSW50MzIgZnJhbWVzVGhp
c1RpbWUgPSBzdGQ6Om1pbjxVSW50MzI+KGtSZW5kZXJCdWZmZXJTaXplLCBmcmFtZXNSZW1haW5p
bmcpOwotICAgICAgICBhc3NpZ25BdWRpb0J1ZmZlcnNUb0J1cyhidWZmZXJzLCBtX3JlbmRlckJ1
cy5nZXQoKSwgbnVtYmVyT2ZCdWZmZXJzLCBudW1iZXJPZkZyYW1lcywgZnJhbWVPZmZzZXQsIGZy
YW1lc1RoaXNUaW1lKTsKLQotICAgICAgICBpZiAoIWZyYW1lc1RoaXNUaW1lKQotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGlmIChmcmFtZXNUaGlzVGltZSA8IGtSZW5kZXJCdWZmZXJTaXpl
KSB7Ci0gICAgICAgICAgICBtX2NhbGxiYWNrLnJlbmRlcigwLCBtX3NwYXJlQnVzLnB0cigpLCBr
UmVuZGVyQnVmZmVyU2l6ZSwgb3V0cHV0VGltZXN0YW1wKTsKLSAgICAgICAgICAgIG1fcmVuZGVy
QnVzLT5jb3B5RnJvbVJhbmdlKG1fc3BhcmVCdXMuZ2V0KCksIDAsIGZyYW1lc1RoaXNUaW1lKTsK
LSAgICAgICAgICAgIG1fc3RhcnRTcGFyZUZyYW1lID0gZnJhbWVzVGhpc1RpbWU7Ci0gICAgICAg
ICAgICBtX2VuZFNwYXJlRnJhbWUgPSBrUmVuZGVyQnVmZmVyU2l6ZTsKLSAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICBtX2NhbGxiYWNrLnJlbmRlcigwLCBtX3JlbmRlckJ1cy5wdHIoKSwgZnJh
bWVzVGhpc1RpbWUsIG91dHB1dFRpbWVzdGFtcCk7Ci0gICAgICAgIHByb2Nlc3NCdXNBZnRlclJl
bmRlcihtX3JlbmRlckJ1cy5nZXQoKSwgZnJhbWVzVGhpc1RpbWUpOwotICAgICAgICBmcmFtZU9m
ZnNldCArPSBmcmFtZXNUaGlzVGltZTsKLSAgICAgICAgZnJhbWVzUmVtYWluaW5nIC09IGZyYW1l
c1RoaXNUaW1lOworCisgICAgLy8gQXNzb2NpYXRlIHRoZSBkZXN0aW5hdGlvbiBkYXRhIGFycmF5
IHdpdGggdGhlIG91dHB1dCBidXMgdGhlbiBmaWxsIHRoZSBGSUZPLgorICAgIGFzc2lnbkF1ZGlv
QnVmZmVyc1RvQnVzKGJ1ZmZlcnMsIG1fb3V0cHV0QnVzLmdldCgpLCBudW1iZXJPZkJ1ZmZlcnMs
IG51bWJlck9mRnJhbWVzLCAwLCBudW1iZXJPZkZyYW1lcyk7CisgICAgc2l6ZV90IGZyYW1lc1Rv
UmVuZGVyID0gbV9maWZvLT5wdWxsKG1fb3V0cHV0QnVzLnB0cigpLCBudW1iZXJPZkZyYW1lcyk7
CisKKyAgICBmb3IgKHNpemVfdCBwdXNoZWRGcmFtZXMgPSAwOyBwdXNoZWRGcmFtZXMgPCBmcmFt
ZXNUb1JlbmRlcjsgcHVzaGVkRnJhbWVzICs9IGtSZW5kZXJCdWZmZXJTaXplKSB7CisgICAgICAg
IGlmIChtX3Jlc2FtcGxlcikKKyAgICAgICAgICAgIG1fcmVzYW1wbGVyLT5wcm9jZXNzKHRoaXMs
IG1fcmVuZGVyQnVzLnB0cigpLCBrUmVuZGVyQnVmZmVyU2l6ZSk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIG1fY2FsbGJhY2sucmVuZGVyKDAsIG1fcmVuZGVyQnVzLnB0cigpLCBrUmVuZGVy
QnVmZmVyU2l6ZSwgbV9vdXRwdXRUaW1lc3RhbXApOworCisgICAgICAgIG1fZmlmby0+cHVzaCht
X3JlbmRlckJ1cy5wdHIoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG5vRXJyOwpAQCAtMTkzLDYg
KzE5MywxMiBAQCBPU1N0YXR1cyBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OmlucHV0UHJvYyh2b2lk
KiB1c2VyRGF0YSwgQXVkaW9Vbml0UmVuZGVyQWN0aW9uRgogICAgIHJldHVybiBhdWRpb091dHB1
dC0+cmVuZGVyKHRpbWVzdGFtcCwgbnVtYmVyT2ZGcmFtZXMsIGlvRGF0YSk7CiB9CiAKK3ZvaWQg
QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpwcm92aWRlSW5wdXQoQXVkaW9CdXMqIGJ1cywgc2l6ZV90
IGZyYW1lc1RvUHJvY2VzcykKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGZyYW1lc1RvUHJvY2Vzcywg
ZnJhbWVzVG9Qcm9jZXNzID09IGtSZW5kZXJCdWZmZXJTaXplKTsKKyAgICBtX2NhbGxiYWNrLnJl
bmRlcigwLCBidXMsIGtSZW5kZXJCdWZmZXJTaXplLCBtX291dHB1dFRpbWVzdGFtcCk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3Rp
bmF0aW9uQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlv
RGVzdGluYXRpb25Db2NvYS5oCmluZGV4IDM5Mjg4ZWE5ZmIzMjRiYmEzMWQxN2MyMzYwOGUxMTVj
YWNjMDMxYWUuLmFmYjYzMDkyNzY1NjAwNGU4ZWE5NTFjZjEzNmExMzA3NzRlMjM1NjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRp
b25Db2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlv
RGVzdGluYXRpb25Db2NvYS5oCkBAIC0yOCwxNyArMjgsMjIgQEAKICNpZiBFTkFCTEUoV0VCX0FV
RElPKQogCiAjaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbi5oIgorI2luY2x1ZGUgIkF1ZGlvSU9D
YWxsYmFjay5oIgorI2luY2x1ZGUgIkF1ZGlvU291cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRlIDxB
dWRpb1VuaXQvQXVkaW9Vbml0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb0J1
czsKK2NsYXNzIE11bHRpQ2hhbm5lbFJlc2FtcGxlcjsKK2NsYXNzIFB1c2hQdWxsRklGTzsKIAog
dXNpbmcgQ3JlYXRlQXVkaW9EZXN0aW5hdGlvbkNvY29hT3ZlcnJpZGUgPSBzdGQ6OnVuaXF1ZV9w
dHI8QXVkaW9EZXN0aW5hdGlvbj4oKikoQXVkaW9JT0NhbGxiYWNrJiwgZmxvYXQgc2FtcGxlUmF0
ZSk7CiAKIC8vIEFuIEF1ZGlvRGVzdGluYXRpb24gdXNpbmcgQ29yZUF1ZGlvJ3MgZGVmYXVsdCBv
dXRwdXQgQXVkaW9Vbml0Ci1jbGFzcyBBdWRpb0Rlc3RpbmF0aW9uQ29jb2EgOiBwdWJsaWMgQXVk
aW9EZXN0aW5hdGlvbiB7CitjbGFzcyBBdWRpb0Rlc3RpbmF0aW9uQ29jb2EgOiBwdWJsaWMgQXVk
aW9EZXN0aW5hdGlvbiwgcHVibGljIEF1ZGlvU291cmNlUHJvdmlkZXIgewogcHVibGljOgogICAg
IEF1ZGlvRGVzdGluYXRpb25Db2NvYShBdWRpb0lPQ2FsbGJhY2smLCBmbG9hdCBzYW1wbGVSYXRl
KTsKICAgICB2aXJ0dWFsIH5BdWRpb0Rlc3RpbmF0aW9uQ29jb2EoKTsKQEAgLTQ5LDE0ICs1NCwx
NCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzZXRJc1BsYXlpbmcoYm9vbCk7CiAKICAgICBib29s
IGlzUGxheWluZygpIGZpbmFsIHsgcmV0dXJuIG1faXNQbGF5aW5nOyB9Ci0gICAgZmxvYXQgc2Ft
cGxlUmF0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQorICAgIGZsb2F0
IHNhbXBsZVJhdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbnRleHRTYW1wbGVSYXRlOyB9
CiAgICAgdW5zaWduZWQgZnJhbWVzUGVyQnVmZmVyKCkgY29uc3QgZmluYWw7CiAgICAgQXVkaW9V
bml0JiBvdXRwdXRVbml0KCkgeyByZXR1cm4gbV9vdXRwdXRVbml0OyB9CiAgICAgCiAgICAgLy8g
RGVmYXVsdE91dHB1dFVuaXQgY2FsbGJhY2sKICAgICBzdGF0aWMgT1NTdGF0dXMgaW5wdXRQcm9j
KHZvaWQqIHVzZXJEYXRhLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFncyosIGNvbnN0IEF1ZGlv
VGltZVN0YW1wKiwgVUludDMyIGJ1c051bWJlciwgVUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRp
b0J1ZmZlckxpc3QqIGlvRGF0YSk7CiAKLSAgICB2b2lkIHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNj
cmlwdGlvbihBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24mLCBmbG9hdCBzYW1wbGVSYXRlKTsK
KyAgICB2b2lkIHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihBdWRpb1N0cmVhbUJhc2lj
RGVzY3JpcHRpb24mKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0KCkgb3ZlcnJpZGU7CkBA
IC02NCw2ICs2OSw5IEBAIHByaXZhdGU6CiAKICAgICBmcmllbmQgc3RkOjp1bmlxdWVfcHRyPEF1
ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShBdWRpb0lPQ2FsbGJhY2sm
LCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCwgdW5zaWduZWQsIGZsb2F0KTsKICAgICAKKyAgICAv
LyBBdWRpb1NvdXJjZVByb3ZpZGVyLgorICAgIHZvaWQgcHJvdmlkZUlucHV0KEF1ZGlvQnVzKiwg
c2l6ZV90IGZyYW1lc1RvUHJvY2VzcykgZmluYWw7CisKICAgICB2b2lkIGNvbmZpZ3VyZSgpOwog
ICAgIHZvaWQgcHJvY2Vzc0J1c0FmdGVyUmVuZGVyKEF1ZGlvQnVzJiwgVUludDMyIG51bWJlck9m
RnJhbWVzKTsKIApAQCAtNzEsMTQgKzc5LDIyIEBAIHByaXZhdGU6CiAKICAgICBBdWRpb1VuaXQg
bV9vdXRwdXRVbml0OwogICAgIEF1ZGlvSU9DYWxsYmFjayYgbV9jYWxsYmFjazsKKworICAgIC8v
IFRvIHBhc3MgdGhlIGRhdGEgZnJvbSBGSUZPIHRvIHRoZSBhdWRpbyBkZXZpY2UgY2FsbGJhY2su
CisgICAgUmVmPEF1ZGlvQnVzPiBtX291dHB1dEJ1czsKKworICAgIC8vIFRvIHB1c2ggdGhlIHJl
bmRlcmVkIHJlc3VsdCBmcm9tIFdlYkF1ZGlvIGdyYXBoIGludG8gdGhlIEZJRk8uCiAgICAgUmVm
PEF1ZGlvQnVzPiBtX3JlbmRlckJ1czsKLSAgICBSZWY8QXVkaW9CdXM+IG1fc3BhcmVCdXM7CiAK
LSAgICBmbG9hdCBtX3NhbXBsZVJhdGU7Ci0gICAgYm9vbCBtX2lzUGxheWluZyB7IGZhbHNlIH07
CisgICAgLy8gUmVzb2x2ZXMgdGhlIGJ1ZmZlciBzaXplIG1pc21hdGNoIGJldHdlZW4gdGhlIFdl
YkF1ZGlvIGVuZ2luZSBhbmQKKyAgICAvLyB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gZnJvbSB0aGUg
YWN0dWFsIGF1ZGlvIGRldmljZS4KKyAgICBVbmlxdWVSZWY8UHVzaFB1bGxGSUZPPiBtX2ZpZm87
CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TXVsdGlDaGFubmVsUmVzYW1wbGVyPiBtX3Jlc2FtcGxl
cjsKKyAgICBBdWRpb0lPUG9zaXRpb24gbV9vdXRwdXRUaW1lc3RhbXA7CiAKLSAgICB1bnNpZ25l
ZCBtX3N0YXJ0U3BhcmVGcmFtZSB7IDAgfTsKLSAgICB1bnNpZ25lZCBtX2VuZFNwYXJlRnJhbWUg
eyAwIH07CisgICAgZmxvYXQgbV9jb250ZXh0U2FtcGxlUmF0ZTsKKyAgICBib29sIG1faXNQbGF5
aW5nIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9T
LmNwcAppbmRleCAzOTI5NTIzNmUzMDNlMGMxODcwNWZmYmVlNTQ2YjQ4OGM1MmFiZWU1Li5jNDcz
M2RlN2Y3NWRhOWFiNmQwODdhMjMxYWQ4ZWI5ODFkYzY4ODhmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3Bw
CkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpjb25maWd1cmUo
KQogICAgIHJlc3VsdCA9IEF1ZGlvVW5pdEdldFByb3BlcnR5KG91dHB1dFVuaXQoKSwga0F1ZGlv
VW5pdFByb3BlcnR5X1N0cmVhbUZvcm1hdCwga0F1ZGlvVW5pdFNjb3BlX091dHB1dCwgMCwgKHZv
aWQqKSZzdHJlYW1Gb3JtYXQsICZzaXplKTsKICAgICBBU1NFUlQoIXJlc3VsdCk7CiAKLSAgICBz
ZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oc3RyZWFtRm9ybWF0LCBzYW1wbGVSYXRlKCkp
OworICAgIHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihzdHJlYW1Gb3JtYXQpOwogCiAg
ICAgcmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkob3V0cHV0VW5pdCgpLCBrQXVkaW9Vbml0
UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICh2b2lkKikm
c3RyZWFtRm9ybWF0LCBzaXplb2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKSk7CiAgICAg
QVNTRVJUKCFyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCmluZGV4IDdhMDFlYWUwNmUyOTAzMmZk
MDU5OGEwMGUzNGRlMjM1N2QyYTU3YTQuLmZmNjk0M2IzODAzYTFiMjU1MmI1OGVjMjcyNTAxNDVj
ZDhlYTQ4YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9B
dWRpb0Rlc3RpbmF0aW9uTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBBdWRp
b0Rlc3RpbmF0aW9uQ29jb2E6OmNvbmZpZ3VyZSgpCiAKICAgICAvLyBTZXQgc3RyZWFtIGZvcm1h
dAogICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1Gb3JtYXQ7Ci0gICAgc2V0
QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKHN0cmVhbUZvcm1hdCwgc2FtcGxlUmF0ZSgpKTsK
KyAgICBzZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oc3RyZWFtRm9ybWF0KTsKIAogICAg
IHJlc3VsdCA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG91dHB1dFVuaXQoKSwga0F1ZGlvVW5pdFBy
b3BlcnR5X1N0cmVhbUZvcm1hdCwga0F1ZGlvVW5pdFNjb3BlX0lucHV0LCAwLCAodm9pZCopJnN0
cmVhbUZvcm1hdCwgc2l6ZW9mKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbikpOwogICAgIEFT
U0VSVCghcmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKaW5kZXggOGFl
YzJlYTNkNGYxNzU5ZGY3Y2U2NDIzNmMzMmI2ODE1NjQ0ZGY3MS4uM2Q2YzgyMWFhNTlmYzQ1YTdl
YjdjMWY4MzI2MmI2OGJjZDlmYzk1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5j
cHAKQEAgLTU1LDYgKzU1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3Bh
Y2UgUEFMOwogCisvLyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSBrQ01WaWRlb0NvZGVjVHlwZV9W
UDkgaXMgYWRkZWQgdG8gQ01Gb3JtYXREZXNjcmlwdGlvbi5oCitjb25zdGV4cHIgQ01WaWRlb0Nv
ZGVjVHlwZSBrQ01WaWRlb0NvZGVjVHlwZV9WUDkgeyAndnAwOScgfTsKKwogc3RhdGljIGJvb2wg
aXNXZWJtUGFyc2VyQXZhaWxhYmxlKCkKIHsKICAgICByZXR1cm4gISF3ZWJtOjpzd2FwICYmIFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViTVBhcnNlckVuYWJsZWQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9D
b3JlQXVkaW9DYXB0dXJlRGV2aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5oCmluZGV4IDUyODg3ZWMyMjNlNzMxYjA5
N2VhMDQ2MjhhNjFiYzQ3NWM4Y2MxNmMuLjU4YTEyYTkxMTRmNmZmZTJkNDQ3OWI5MWVhMDliN2Yy
ZDBlMDM2MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2UuaApAQCAtMjgsNiArMjgs
NyBAQAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKE1BQykKIAogI2luY2x1
ZGUgIkNhcHR1cmVEZXZpY2UuaCIKKyNpbmNsdWRlIDxwYWwvc3BpL2NmL0NvcmVBdWRpb1NQSS5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrQXVkaW9E
ZXN0aW5hdGlvbkNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja0F1
ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKaW5kZXggODYzYzRkNTRiZjk3OGQyOGViNTExMzY3MjQw
MThkZDE3MTMzNGNkMy4uOGUzYWYwMzUzNmMyZDNiNzZiODYzNTY4Zjg3NDk0YjVhM2MxZjRjNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrQXVkaW9EZXN0aW5h
dGlvbkNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tBdWRp
b0Rlc3RpbmF0aW9uQ29jb2EuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgTW9ja0F1ZGlvRGVz
dGluYXRpb25Db2NvYTo6dGljaygpCiB7CiAgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFt0aGlz
LCBzYW1wbGVSYXRlID0gc2FtcGxlUmF0ZSgpLCBudW1iZXJPZkZyYW1lc1RvUHJvY2VzcyA9IG1f
bnVtYmVyT2ZGcmFtZXNUb1Byb2Nlc3NdIHsKICAgICAgICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2Ny
aXB0aW9uIHN0cmVhbUZvcm1hdDsKLSAgICAgICAgc2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0
aW9uKHN0cmVhbUZvcm1hdCwgc2FtcGxlUmF0ZSk7CisgICAgICAgIHNldEF1ZGlvU3RyZWFtQmFz
aWNEZXNjcmlwdGlvbihzdHJlYW1Gb3JtYXQpOwogCiAgICAgICAgIFdlYkF1ZGlvQnVmZmVyTGlz
dCB3ZWJBdWRpb0J1ZmZlckxpc3QgeyBzdHJlYW1Gb3JtYXQsIG51bWJlck9mRnJhbWVzVG9Qcm9j
ZXNzIH07CiAgICAgICAgIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6aW5wdXRQcm9jKHRoaXMsIDAs
IDAsIDAsIG51bWJlck9mRnJhbWVzVG9Qcm9jZXNzLCB3ZWJBdWRpb0J1ZmZlckxpc3QubGlzdCgp
KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>